String jData="Memur adayar\u0131n\u0131n en b\u00fcy\u00fck sorunar"
+ "\u0131ndan KPSS \u0 131 ";
jData = Regex.Replace(jData, @"\\u0 ", @"\\u0", RegexOptions.Compiled).Trim();
我必须用"\u0 "
替换jData中的"\u0"
(即,如果有的话,删除尾随的空白字符),但我使用的方法不起作用。我该怎么办?
答案 0 :(得分:1)
因此,您在字符串中遇到了一些格式错误的Unicode转义符,并且您希望通过删除0
之后的任何空格来修复它们。这很简单:
jData = Regex.Replace(jData, @"(\\u0)\s+(\w+)", "$1$2");
所有这一切中最困难的部分是弄清楚所有反斜杠应该是什么意思。 C#可以帮助你支持逐字字符串的替代字符串文字语法,你必须用反斜杠转义的唯一字符是反斜杠本身。 (你也必须转义引号,但你用另一个引号来表达,即""
)。
有了这个,我回答这个问题的真正原因是建议你不要使用RegexOptions.Compiled
。我相信你听过很多人说它让正则表达式工作得更快。这是真的,但这是过于简单化了。请阅读this article,以便对此问题进行详细讨论。帮自己一个忙,忘记RegexOptions.Compiled
甚至存在,直到你遇到一个没有它你无法解决的问题。
答案 1 :(得分:0)
查找:@"\\u0 "
替换:@"\\u0"
答案 2 :(得分:0)
我认为我得到了它的工作
string jData= @"Memur adayar\u0131n\u0131n en b\u00fcy\u00fck sorunar\u0131ndan KPSS \u0 131 ";
jData = Regex.Replace(jData, @"\\u0 ", @"\u0", RegexOptions.Compiled).Trim();
注意我在输入字符串前面添加了额外的'@'
。在正则表达式部分,我将第三个参数更改为@"\u0"
答案 3 :(得分:0)
您的示例字符串存在问题。我假设您确实想要字符串中的反斜杠,在这种情况下,最简单的方法是在字符串文字之前放置@。然后我相信你在第二行中遇到了相反的问题,你应该在每个字符串中只使用一个反斜杠,或者省略@。 这里没有理由使用Regex.Replace()。 jData.Replace()就足够了:
String jData=@"Memur adayar\u0131n\u0131n en b\u00fcy\u00fck sorunar"
+ @"\u0131ndan KPSS \u0 131 ";
jData = jData.Replace(@"\u0 ", @"\u0").Trim();