如何将两个斜杠替换成一个斜杠?

时间:2012-03-15 11:19:42

标签: c# .net

我们有以下代码:

string str="\\u5b89\u5fbd\\";

我们需要以下列格式输出:

"\u5b89\u5fbd\"

我们尝试过这段代码:

str.Replace("\\",@"\")

它不起作用。

6 个答案:

答案 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页面,你不需要任何替换来输出你想要的东西......