String.Replace似乎无法将括号替换为空字符串

5
以下这段C#代码似乎没有任何作用:
String str = "{3}";
str.Replace("{", String.Empty);
str.Replace("}", String.Empty);

Console.WriteLine(str);

最终输出的结果是:{3}。我不知道为什么会这样。我经常在Java中做这种事情。是.NET字符串处理的某些微妙之处让我无法理解吗?


可能是 https://dev59.com/JXI-5IYBdhLWcg3wQV4Z 的重复问题。这个问题先出现,但另一个问题的标题更清晰。 - goodeye
9个回答

19

字符串类是不可变的(immutable);str.Replace 不会更改 str,而是返回一个包含结果的新字符串。请尝试使用以下代码:

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

Console.WriteLine(str);

8

字符串是不可变的,你不能改变一个字符串实例。你的两个Replace()方法对原始字符串没有任何影响;它们返回一个修改后的字符串。你应该这样:

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

Console.WriteLine(str);

在Java中也是这样工作的。

7

实际上,替换操作并没有修改你调用它的字符串实例。它只是返回一个修改后的副本。

试一下这个:

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

Console.WriteLine(str);

6

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

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

5

你需要完成以下任务:

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

Console.WriteLine(str);

请查看String.Replace的参考文档:

返回值类型:System.String

一个与原字符串等效的新字符串,其中所有旧值都被替换为新值。


5
Replace函数返回修改后的字符串,因此您需要将其重新赋值给您的str变量。
String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

Console.WriteLine(str);

4
我认为str.Replace返回一个值,你需要将其赋值给你的变量。所以你需要做类似这样的事情:
String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);

Console.WriteLine(str);

3
< p > Replace 方法返回一个带有替换字符串的字符串。我认为您要找的是这个:

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

Console.WriteLine(str);

3
除了目前为止提出的所有建议之外,您还可以通过在输出中内联使用替换函数来完成此操作,而无需更改原始字符串的值...
String str = "{3}";

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接