我们有以下代码:
string str="\\u5b89\u5fbd\\";
我们需要以下列格式输出:
"\u5b89\u5fbd\"
我们尝试过这段代码:
str.Replace("\\",@"\")
它不起作用。
答案 0 :(得分:5)
试试这个
string str = "\\u5b89\u5fbd\\";
str = str.Replace(@"\\", @"\");
\
是保留的标志。 \\
将其转义并生成\
在字符串的开头添加@
告诉编译器按原样使用字符串,而不是转义字符。
因此请使用"\\\\"
或@"\\"
\\u5b89\u5fbd\\
实际上没有两个\
。 \
刚刚被转义。
字符串结果为\u5b89徽\
。在该字符串中,您无法替换\\
,因为只有一个\
。
答案 1 :(得分:3)
你试过这个吗?
str.Replace("\\\\","\\");
你的榜样一事无成。 "\\"
是\
的转义版本,@"\"
是撰写\
的另一个版本。因此,您的示例会将\
替换为\
修改强> 现在我明白你的问题。您想要的实际上无法完成,因为这将导致字符串以单个\结束,并且不允许这样做。 \表示转义序列的开始,并且在它之后需要一些东西。
我认为这里没有好的选择,因为在你的情况下\ u5b89不是一个字符串,而是一个特定字符的转义序列。
str.Replace("\\u5b89","\u5b89");
这适用于您当前的示例,但只适用于这一个特定字符,所以我想它不会对您有所帮助。最后你不能用\替换,但我不明白为什么你需要字符串以这个字符结尾。
你最好的办法是确保首先不在字符串的开头出现\,而不是试图在之后删除它。
答案 2 :(得分:1)
好的,所以第一个字符串实际上保存为:
"\u5b89[someChineseCharacter]\"
因为您已经在使用转义序列。如果您希望原始字符串是您键入的内容,则必须这样做:
string str = @"\\u5b89\u5fbd\\";
然后,str = str.Replace(@"\\",@"\")
会起作用。
在visual studio中键入string str="\\u5b89\u5fbd\\";
时,会将字符串\u5b89徽\
保存在内存中,因为您在原始语句中使用了多个转义序列:
\\
实际上意味着\
\u5fbd
实际上意味着unicode字符5fbd,即徽
。
出于这个原因,这些被替换了,并且在内存中你的字符串看起来就像提到的那样。
因此,如果您尝试替换两个反斜杠@"\\"
的出现,它似乎什么都不做,因为在原始字符串中没有这样的事件开始。
希望这说清楚。
答案 3 :(得分:0)
试试这个可以解决你的问题。
str.Replace( “\\\\”, “\\”);
答案 4 :(得分:0)
或者也许是这样的东西?
foreach (char c in str)
{
if ((int)c < 256)
Console.Write(c);
else
Console.Write(String.Format("\\u{0:x4}", (int)c));
}
)
答案 5 :(得分:-1)
也许只是我,但我认为输入字符串中间应该有一个“\”,否则第二个u5fbd
将被解释为unicode字符(所以你不会把它输出为你希望)。使用这样的起始字符串:
string str="\\u5b89\\u5fbd\\";
如果对于“输出”你的意思是控制台或HTML页面,你不需要任何替换来输出你想要的东西......