2009-06-01 112 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));