String.Replace似乎没有用空字符串替换括号

时间:2009-06-01 21:22:37

标签: c# string

以下C#代码似乎没有做任何事情:

String str = "{3}";
str.Replace("{", String.Empty);
str.Replace("}", String.Empty);

Console.WriteLine(str);

最终吐出:{3}。我不知道为什么会这样。我总是用Java做这件事。是否存在一些.NET字符串处理的细微差别?

布赖恩

9 个答案:

答案 0 :(得分:19)

String类是immutable; str.Replace不会改变str,它会返回带有结果的新字符串。试试这个:

String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

Console.WriteLine(str);

答案 1 :(得分:8)

字符串是不可变的;你不能改变一个字符串的实例。你的两个Replace()调用对原始字符串没有任何作用;他们返回修改后的字符串。你想要这个:

String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

Console.WriteLine(str);

它也在Java中以这种方式工作。

答案 2 :(得分:7)

实际上,替换不会修改您调用它的字符串实例。它只是返回修改后的副本。

试试这个:

String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

Console.WriteLine(str);

答案 3 :(得分:6)

Str.Replace返回一个新字符串。因此,您需要按如下方式使用它:

String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

答案 4 :(得分:5)

我想你必须要做

String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

Console.WriteLine(str);

查看String.Replace参考:

  

返回值类型:System.String

     

与此实例等效的String   与oldValue的所有实例   替换为newValue。

答案 5 :(得分:5)

Replace函数返回修改后的字符串,因此您必须将其分配回str变量。

String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

Console.WriteLine(str);

答案 6 :(得分:4)

我相信str.Replace会返回一个必须赋值给你的变量的值。所以你需要做类似的事情:

String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

Console.WriteLine(str);

答案 7 :(得分:3)

Replace方法返回替换字符串。我认为你在寻找的是:

str = str.Replace("{", string.Empty);
str = str.Replace("}", string.Empty);

Console.WriteLine(str);

答案 8 :(得分:3)

除了目前为止的所有建议之外 - 您还可以通过在输出中使用内联替换函数来更改原始字符串的值来实现此目的...

String str = "{3}";

Console.WriteLine(str.Replace("{", String.Empty).Replace("}", String.Empty));