代码之家  ›  专栏  ›  技术社区  ›  Priyank Bolia

如何在C#中替换字符串中的文本?

  •  1
  • Priyank Bolia  · 技术社区  · 16 年前

    我有这段特殊的代码,但它不起作用。

    text = text.Replace("\xEF\xBF\xBD", "?");
    

    有人知道如何替换文本吗 "\xEF\xBF\xBD" "?" 在C中# String .

    2 回复  |  直到 16 年前
        1
  •  8
  •   oefe    16 年前

    简短回答(略作猜测):

    text = text.Replace("\xFFFD", "?");
    

    Unicode character encodings utf-8.

    长答覆:

    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", "?");
    

    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的形式从文件中读取了这些字节,那么答案是:

        2
  •  14
  •   Josh    16 年前

    text = text.Replace("\\xEF\\xBF\\xBD", "?");
    

    或者,可以使用@符号转义整个字符串:

    text = text.Replace(@"\xEF\xBF\xBD", "?");