【问题标题】:How to replace text in string in C#?如何在 C# 中替换字符串中的文本?
【发布时间】:2010-12-27 09:33:03
【问题描述】:

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

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

有谁知道如何在 C# String 中将文本 "\xEF\xBF\xBD" 替换为 "?"

【问题讨论】:

    标签: c# string replace


    【解决方案1】:

    你必须转义反斜杠。

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

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

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

    【讨论】:

    • 结合了两个答案。根据大卫的需要,向他提供代表。
    • 谢谢克里斯!我什至不知道你可以结合答案。很酷。
    • 如果您逐字逐句回答 Priyanks 问题,这个答案在技术上可能是正确的,但我认为他并不想替换字符“�”...
    • 我不是在问如何转义反斜杠,我想替换 Unicode 序列。
    【解决方案2】:

    简答(猜测一下):

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

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

    还是要替换byte序列

    EF BF BD
    

    (实际上可能是 unicode 替换字符 FFFD 的 utf-8 表示形式,通常显示为“�”)?

    这只是一个疯狂的猜测,但直觉告诉你实际上想要实现后者。现在,.Net 字符串包含字符,而不是字节,但假设您已经阅读了这些字节,例如从 utf-8 格式的文件中,答案是:

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

    【讨论】:

    • 我说的是字节序列,而不仅仅是纯字符值,您的回答效果很好。但是您能否详细说明为什么我不能像在问题中那样通过给出字节值来替换字节序列以及为什么我必须写 \xFFFD
    • 很好地找到了维基百科对我的评论的答案:en.wikipedia.org/wiki/Unicode_Specials
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多