2009-06-01 97 views
5

的C#代码下位更换支架似乎并没有做任何事情:似乎与string.replace不与空字符串

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

Console.WriteLine(str); 

这最终吐出:{3}。我不知道这是为什么。我一直在用Java来做这类事情。有没有.NET字符串处理的一些细微差别,逃避我?

Brian

+0

http:// stackoverflow可能存在重复。COM /问题/ 1948978 /字符串替换 - 不工作。这是第一个,但另一个有更清晰的标题。 – goodeye 2012-03-27 02:41:54

回答

18

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

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

Console.WriteLine(str); 
5

我想你需要做的

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

Console.WriteLine(str); 

看那String.Replace参考:

返回值类型:System

与此实例等效的字符串,但 与所有oldValue实例 替换为newValue。

5

Replace函数返回修改过的字符串,所以您必须将它分配回您的str变量。

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); 
7

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

试试这个:

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中也是这样工作的。

4

我相信str.Replace返回一个值,你必须赋值给你的变量。所以,你需要做的是这样:

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

Console.WriteLine(str); 
3

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));