我有這段代碼,但它不工作。如何在C#中替換字符串中的文本?
text = text.Replace("\xEF\xBF\xBD", "?");
是否有任何人知道如何將文本"\xEF\xBF\xBD"
更換到"?"
在C#String
。
我有這段代碼,但它不工作。如何在C#中替換字符串中的文本?
text = text.Replace("\xEF\xBF\xBD", "?");
是否有任何人知道如何將文本"\xEF\xBF\xBD"
更換到"?"
在C#String
。
簡答題(猜測了一下):
text = text.Replace("\xFFFD", "?");
,瞭解Unicode和character encodings ,尤其是utf-8.
長答案:
那麼,你的意思是「\ xEF \ xBF \ xBD」的字面意思嗎?也就是說,由這些字符的字符串:
backslash, uppercase latin character E, uppercase latin character F, backslash, uppercase latin character B, uppercase latin character F, backslash, uppercase latin character B, uppercase latin character D
然後,答案應該是:
text = text.Replace(@"\xEF\xBF\xBD", "?");
還是你這是用C#轉義序列「中描述\ XEF \ XBF字符序列\ XBD 「即:
LATIN SMALL LETTER I WITH DIAERESIS, INVERTED QUESTION MARK, VULGAR FRACTION ONE HALF
(這將顯示爲」?�)然後,你的代碼是正確的:
text = text.Replace("\xEF\xBF\xBD", "?");
還是你想更換字節序列
EF BF BD
(這實際上可能是Unicode替換字符,FFFD,這往往顯示爲「」的UTF-8表示)?
這只是一個瘋狂的猜測,但是憑直覺說你實際上想要達到後者。現在,.Net字符串包含字符,而不是字節,但假設您已經讀取了這些字節,例如從一個文件爲utf-8,答案將是:
text = text.Replace("\xFFFD", "?");
你必須逃避反斜槓。
text = text.Replace("\\xEF\\xBF\\xBD", "?");
或者,您可以逃避以@符號整個字符串:
text = text.Replace(@"\xEF\xBF\xBD", "?");
合併兩個答案。根據需要給大衛代表。 – 2009-12-16 20:17:19
謝謝克里斯!我甚至不知道你可以結合答案。很酷。 – David 2009-12-16 20:23:06
不得不編輯您的文章並刪除我的。 – 2009-12-16 20:40:20
我在談論字節序列,而不僅僅是簡單的字符值,你的答案運作良好。但是,請你詳細說明爲什麼我不能通過給出字節值來替換字節序列,就像我在問題中所做的一樣,爲什麼我必須寫\ xFFFD – 2009-12-17 03:58:33
以及維基百科對我的評論的答案:http:// en.wikipedia。組織/維基/ Unicode_Specials – 2009-12-17 04:27:38