2013-07-06 33 views
5

只去掉最後一個字符我有串如下爲什麼string.TrimEnd不串

2,44,AAA,BBB,1,0,,, 

所以現在我想刪除只在上面的字符串最後一個逗號。所以我想輸出

2,44,AAA,BBB,1,0,, 

我決定用TrimeEnd如下

str.ToString.TrimEnd(',') 

但它刪除了所有的逗號後爲0,所以我得到的輸出如下

2,44,AAA,BBB,1,0 

爲什麼刪除0之後的所有3個逗號?我只需要刪除字符串中的最後一個字符

回答

30

爲什麼它刪除0之後的所有3個逗號?

,因爲這是它的documented做:

返回值:
保留在trimChars參數的人物都出現後面的字符串從當前字符串的結尾去掉。

如果你只是想最後一個字符去掉,你可以使用:

if (str.EndsWith(",")) 
{ 
    str = str.Substring(0, str.Length - 1); 
} 

或等價:

if (str.EndsWith(",")) 
{ 
    str = str.Remove(str.Length - 1); 
} 
+15

@ DannyBeckett:請不要從我的代碼中移除大括號。我的個人編碼風格(以及在我工作過的每家公司中都強制實施的風格)是*總是*包括循環,if語句等括號。它可以避免縮進可能意味着代碼行爲的問題方式,當它實際上行爲不同。 –

+0

沒問題,並感謝您的建議。 –

+0

非常感謝。它工作 – Happy

4

,預計。 String.TrimEnd移除一組從當前字符串對象

TrimEnd(char[] trimChars)的方法從當前字符串所有尾隨字符處於trimChars參數除去在陣列中指定的字符的所有後發生。

str = str.EndsWith(",") ? str.Substring(0, str.Length - 1) : str; 
1

您可以使用此:當在字符串

使用此而不是結束時遇到不在trimChars第一個字符的微調操作將停止

string s = "2,44,AAA,BBB,1,0,,,"; 
s = s.Remove(s.Length-1, 1); 
+0

這將刪除*任何*字符,不管它是否是逗號。 –

+0

具體到這種情況 - >但問題是最後刪除了逗號.. – Vishal

+0

我不知道你是否被誤解了......假設字符串是:'string s =「2,44,AAA,BBB ,1,0 ,,, 123',會發生什麼? –