文字列c#の最後の特定の文字を削除します


88

私はWinFormsc#を使用しています。以下のような文字列値があります。

string Something = "1,5,12,34,";

文字列の最後のカンマを削除する必要があります。では、どうすれば削除できますか?


16
なぜあなたはそのようなものを持っているのstringですか?カンマをintsに連結するループがあるためだと思います。string.Join(",", ints)代わりに使用できます。これにより、そもそも末尾のコンマが回避されます。
Tim Schmelter 2013年

回答:


262

試してみてくださいstring.TrimEnd()

Something = Something.TrimEnd(',');

5
これは、文字列が実際にコンマで終わっているかどうかを事前に知らない状況を含め、すべての文字列に対して機能するため、最良の解決策です。
East of Nowhere

6
だからこそ、自分で簡単に書けるものでも解決策を探しています。通常、他の誰かがそれを解決しました。:)
dpberry1 7819年

1
したがって、一重引用符は間違いではありませんでした。今日、charとstringはそれぞれ一重引用符と二重引用符で定義されていることを学びました。
egmfrs

20

キングキングの答えはもちろん正しいです。また、ティムシュメルターのコメントもあなたの場合の良い提案です。

しかし、本当に 文字列の最後のコンマを削除したい場合のインデックスを見つけて、次のように削除する必要があります。

string s = "1,5,12,34,12345";
int index = s.LastIndexOf(',');
Console.WriteLine(s.Remove(index, 1));

出力は次のようになります。

1,5,12,3412345

ここにdemonstration

あなたがこのように望む可能性は非常に低いですが、私はそれを指摘したいと思います。また、String.Removeメソッドは元の文字列の文字を削除せず、新しい文字列を返すことを忘れないでください。


5

試してみてください string.Remove();

string str = "1,5,12,34,";
string removecomma = str.Remove(str.Length-1);
MessageBox.Show(removecomma);

3

TrimEndメソッドは、文字列ではなく入力文字配列を受け取ります。以下のコードドットネットパールズは、TrimEndと同じ機能を実行する方法のより効率的な一例を示しています。

static string TrimTrailingChars(string value)
{
    int removeLength = 0;
    for (int i = value.Length - 1; i >= 0; i--)
    {
        char let = value[i];
        if (let == '?' || let == '!' || let == '.')
        {
            removeLength++;
        }
        else
        {
            break;
        }
    }
    if (removeLength > 0)
    {
        return value.Substring(0, value.Length - removeLength);
    }
    return value;
}

1

または、最初に次の方法でChar配列に変換できます。

string Something = "1,5,12,34,";
char[] SomeGoodThing=Something.ToCharArray[];

今、あなたは各キャラクターを持っていますindexed

SomeGoodThing[0] -> '1'
SomeGoodThing[1] -> ','

それをいじって


1

以下をお試しください

Something..TrimEnd( "、"。ToCharArray());


0
Dim psValue As String = "1,5,12,34,123,12"
psValue = psValue.Substring(0, psValue.LastIndexOf(","))

出力:

1,5,12,34,123

質問はVBではなくC#についてでした。
metabuddy 2018年

0

最後にスペースがある場合。あなたは以下を使うことができます。

ProcessStr = ProcessStr.Replace(" ", "");
Emails     = ProcessStr.TrimEnd(';');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.