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

Bri*_*ney 5 c# string

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

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

Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

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

布赖恩

Fre*_*örk 19

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

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

Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)


Mic*_*tta 8

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

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

Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

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


Use*_*ser 7

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

试试这个:

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

Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)


Jos*_*lio 6

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

String str = "{3}";
str = str.Replace("{", String.Empty);
str = str.Replace("}", String.Empty);
Run Code Online (Sandbox Code Playgroud)


sch*_*der 5

我想你必须这样做

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

Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

查看String.Replace引用:

返回值类型:System.String

与此实例等效的String,但所有oldValue实例都替换为newValue.


Dav*_*ray 5

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

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

Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)