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#中字符串中的特殊序列替换的主要内容,如果未能解决你的问题,请参考以下文章

用c#中列表中的连续元素替换字符串占位符

我想从文件名中删除特殊字符而不影响 c# 中的扩展名

C#里几种Json字符串特殊字符的转义

C# Regex 用 <p> 替换一些 HTML 序列,用 </p> 替换一些

替换python字符串中的特殊字母[重复]

lua中怎么替换掉字符串中的$^特殊字符?