2013-01-03 186 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甚至存在,直到你遇到了一個問題,你不能沒有它解決。