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