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 "在 jData中替换为"\u0"(即删除尾随空格字符,如果有的话),但我使用的方法不起作用。我该怎么办?

4

4 回答 4

1

所以你在字符串中有一些格式错误的 Unicode 转义,你想通过删除0. 这很简单:

jData = Regex.Replace(jData, @"(\\u0)\s+(\w+)", "$1$2");

所有这一切中最困难的部分是弄清楚所有反斜杠应该是什么意思。C# 可以帮助您支持逐字字符串的替代字符串文字语法,您必须用反斜杠转义的唯一字符是反斜杠本身。(您也必须转义引号,但您可以使用另一个引号,即 ie "")。


顺便说一句,我回答这个问题的真正原因是建议您不要使用RegexOptions.Compiled. 我敢肯定你听过很多人说它使正则表达式工作得更快。这是真的,但它过于简单化了。阅读这篇文章可以很好地讨论这个问题。帮自己一个忙,RegexOptions.Compiled甚至忘记存在,直到遇到一个没有它就无法解决的问题。

于 2013-01-03T17:07:27.840 回答
0

查找: @"\\u0 " 替换:@"\\u0"

他们是一样的。尝试使用大写的 O 或正常的 o

于 2013-01-03T13:48:41.970 回答
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"

于 2013-01-03T14:04:43.233 回答
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();
于 2013-01-03T14:10:58.053 回答