可以将C#字符串值转换为转义字符串文本吗?

可以将C#字符串值转换为转义字符串文本吗?

在C#中,我是否可以将字符串值转换为字符串文本,就像我在代码中所看到的那样?我想用转义序列替换制表符、换行符等。

如果此代码:

Console.WriteLine(someString);

生产:

HelloWorld!

我要这个密码:

Console.WriteLine(ToLiteral(someString));

生产:

\tHello\r\n\tWorld!\r\n


紫衣仙女
浏览 1773回答 3
3回答

九州编程

我发现了这个:private static string ToLiteral(string input){     using (var writer = new StringWriter())     {         using (var provider = CodeDomProvider.CreateProvider("CSharp"))         {             provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null);             return writer.ToString();         }     }}此代码:var input = "\tHello\r\n\tWorld!";Console.WriteLine(input);Console.WriteLine(ToLiteral(input));生产:    Hello     World!"\tHello\r\n\tWorld!"

ibeautiful

一种更结构化的方法,包括stringS和charS.不会将Unicode字符替换为它们的文字等效字符。也不会煮鸡蛋。public&nbsp;class&nbsp;ReplaceString{ &nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;readonly&nbsp;IDictionary<string,&nbsp;string>&nbsp;m_replaceDict&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;new&nbsp;Dictionary<string,&nbsp;string>(); &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;string&nbsp;ms_regexEscapes&nbsp;=&nbsp;@"[\a\b\f\n\r\t\v\\""]"; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;StringLiteral(string&nbsp;i_string) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Regex.Replace(i_string,&nbsp;ms_regexEscapes,&nbsp;match); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;CharLiteral(char&nbsp;c) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;c&nbsp;==&nbsp;'\''&nbsp;?&nbsp;@"'\''"&nbsp;:&nbsp;string.Format("'{0}'",&nbsp;c); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;string&nbsp;match(Match&nbsp;m) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;match&nbsp;=&nbsp;m.ToString(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(m_replaceDict.ContainsKey(match)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;m_replaceDict[match]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;NotSupportedException(); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;ReplaceString() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\a",&nbsp;@"\a"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\b",&nbsp;@"\b"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\f",&nbsp;@"\f"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\n",&nbsp;@"\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\r",&nbsp;@"\r"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\t",&nbsp;@"\t"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\v",&nbsp;@"\v"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\\",&nbsp;@"\\"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\0",&nbsp;@"\0"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//The&nbsp;SO&nbsp;parser&nbsp;gets&nbsp;fooled&nbsp;by&nbsp;the&nbsp;verbatim&nbsp;version&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//of&nbsp;the&nbsp;string&nbsp;to&nbsp;replace&nbsp;-&nbsp;@"\""" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//so&nbsp;use&nbsp;the&nbsp;'regular'&nbsp;version &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_replaceDict.Add("\"",&nbsp;"\\\"");&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;void&nbsp;Main(string[]&nbsp;args){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;s&nbsp;=&nbsp;"here's&nbsp;a&nbsp;\"\n\tstring\"&nbsp;to&nbsp;test"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(ReplaceString.StringLiteral(s)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(ReplaceString.CharLiteral('c')); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(ReplaceString.CharLiteral('\'')); &nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP