2013-07-06 1 views
5

にのみ最後の文字を削除しないのはなぜ私はstring.TrimEndが文字列

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

以下のように文字列を持っているので、今私は、上記の文字列にのみ、最後のコンマを削除したいです。だから、私は

str.ToString.TrimEnd(',') 

以下のようTrimeEndを使用することにしました。しかし、それは私が

2,44,AAA,BBB,1,0 

なぜそれ以下のような出力を得る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'、どうなるの? –