2013-01-03 56 views
-1
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"取代"\u0 "在jData(即,如果有一个取出后空白字符),但我所使用的方法是行不通的。我该怎么办?替换Unicode字符

+0

但在你的代码中,他们都'u0'? –

+0

'jData'究竟来自哪里?您的当前代码不会编译,因为'\ u0'在C#字符串文字中无效。 – Rawling

回答

0

发现:@"\\u0 " 取代:@"\\u0"

它们是相同的。与资本O或正常Ø

+0

不,它们不是。在@“\\ u0”中有空格字符。 – RockOnGom

+0

另外,你的替换字符串应该是'“@ \ u0”'或'“\\ u0”'。现在你已经知道了,你用两个反斜杠替换了原来的一个反斜杠。 –

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"

0

您的示例字符串存在问题。我假设你实际上想要字符串中的反斜杠,在这种情况下,最简单的方法是将@放在字符串文字之前。然后我相信你在第二行有相反的问题,你应该在每个字符串中只使用一个反斜杠,或者省略@。 这里没有理由使用Regex.Replace()。 jData.Replace()就足够了就好:

 String [email protected]"Memur adayar\u0131n\u0131n en b\u00fcy\u00fck sorunar" 
      + @"\u0131ndan KPSS \u0 131 "; 
     jData = jData.Replace(@"\u0 ", @"\u0").Trim(); 
0

下面的代码工作

jData = Regex.Replace(jData, @"\\u0\s", @"\\u0", RegexOptions.Compiled).Trim(); 
0

所以,你有一些错误的Unicode转义字符串中,你想删除任何解决这些问题0之后的空格。这很简单:

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

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


有了这样的方式,真正的原因我回答了这个问题是要劝你不要用RegexOptions.Compiled。我相信你听到很多人说它使得正则表达式工作得更快。这是真的,但这是过分简单化。阅读this article就可以很好地讨论这个问题。自己帮忙,忘记RegexOptions.Compiled甚至存在,直到你遇到了一个问题,你不能没有它解决。