C#中字符串中的特殊序列替换
Posted
技术标签:
【中文标题】C#中字符串中的特殊序列替换【英文标题】:Special Sequence Replace in String in C# 【发布时间】:2021-08-20 04:47:00 【问题描述】:我有一个类似下面的字符串
Testing\u001cTesting Testing Testing\u001cTesting
当我尝试在 Http.Response
中发送此回复时,我在 Postman 中得到了(方形框)。
我想将\u001c
替换为\u001c
。
我尝试了以下,
myText.Replace("\u001c", @"\\u001c");
--- 它会像这样被替换 \\\\u001c
myText.Replace("\u001c", @"u001c");
--- 它会像这样被替换 u001c
myText.Replace("\u001c", @"\u001c");
--- 它会像这样被替换 \\u001c
myText.Replace("u001c", @"u001c");
--- 像这样被替换(方框)
我的错误在哪里?
【问题讨论】:
错误可能在于您如何查看结果值:调试器有助于将字符串值显示为源代码 - 带有双反斜杠。尝试使用放大镜将其显示为真实文本 我假设\u001c
是一个 single 字符(“字段分隔符”),由其 Unicode 代码点转义序列(十六进制 1C,十进制 28)而不是六个以实际反斜杠开头的字符?这不是“可打印字符”,因此 Postman 无法显示它
【参考方案1】:
'\' 字符是一个特殊字符。当您想在字符串中包含该字符时,您必须使用转义字符,它也是“\”。 因此,如果您想拥有“c:\a.txt”,则需要将其编写为“c:\\a.txt”。 但这使得处理地址和 URL 变得困难,因为它们中可能有很多“\”。 因此,当您想使用地址时,可以将 @ 放在字符串之前,让编译器添加转义字符。 简而言之,当您使用 @"\" 时,编译器会添加第二个。 如果要将“\u001c”替换为“\u001c”,您必须执行以下操作:
myText.Replace("\\u001c", "\\u001c");
【讨论】:
以上是关于C#中字符串中的特殊序列替换的主要内容,如果未能解决你的问题,请参考以下文章