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

Pri*_*lia 1 c# string replace

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

text = text.Replace("\xEF\xBF\xBD", "?");
Run Code Online (Sandbox Code Playgroud)

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

小智 14

你必须逃避反斜杠.

text = text.Replace("\\xEF\\xBF\\xBD", "?");
Run Code Online (Sandbox Code Playgroud)

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

text = text.Replace(@"\xEF\xBF\xBD", "?");
Run Code Online (Sandbox Code Playgroud)


oef*_*efe 8

简短回答(猜一点):

text = text.Replace("\xFFFD", "?");
Run Code Online (Sandbox Code Playgroud)

并了解Unicode字符编码,尤其是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
Run Code Online (Sandbox Code Playgroud)

然后,答案是:

text = text.Replace(@"\xEF\xBF\xBD", "?");
Run Code Online (Sandbox Code Playgroud)

或者你是由C#转义序列"\ xEF\xBF\xBD"描述的字符序列,即:

LATIN SMALL LETTER I WITH DIAERESIS, INVERTED QUESTION MARK, VULGAR FRACTION ONE HALF
Run Code Online (Sandbox Code Playgroud)

(显示为"�")然后,你的代码是正确的:

text = text.Replace("\xEF\xBF\xBD", "?");
Run Code Online (Sandbox Code Playgroud)

或者您想要替换字节序列

EF BF BD
Run Code Online (Sandbox Code Playgroud)

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

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

text = text.Replace("\xFFFD", "?");
Run Code Online (Sandbox Code Playgroud)