Hapus karakter spesifik terakhir dalam string c #


88

Saya menggunakan WinForms c #. Saya memiliki nilai string seperti di bawah ini,

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

Saya perlu menghapus koma terakhir dalam sebuah string. Jadi Bagaimana cara menghapusnya?


16
Kenapa kamu punya seperti itu string? Saya berasumsi karena sebuah loop yang menggabungkan koma dengan ints. Anda bisa menggunakan string.Join(",", ints)sebagai gantinya. Itu menghindari koma di tempat pertama.
Tim Schmelter

Jawaban:


262

Coba string.TrimEnd():

Something = Something.TrimEnd(',');

5
Ini adalah solusi terbaik karena berfungsi untuk semua string, termasuk situasi di mana Anda tidak tahu sebelumnya JIKA string sebenarnya diakhiri dengan koma, atau tidak.
East of Nowhere

6
Inilah mengapa saya masih mencari solusi bahkan untuk hal-hal yang dapat saya tulis sendiri dengan mudah. Biasanya orang lain telah memecahkannya. :)
dpberry178

1
Jadi, kutipan tunggal itu bukanlah kesalahan. Hari ini saya belajar bahwa karakter dan string masing-masing didefinisikan dengan kutipan tunggal dan ganda.
egmfrs

20

Jawaban Raja Raja tentu saja benar. Juga komentar Tim Schmelter juga merupakan saran yang bagus dalam kasus Anda.

Tetapi jika Anda mau benar benar menghapus koma terakhir dalam sebuah string , Anda harus mencari indeks koma terakhir dan menghapus like;

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

Output akan menjadi;

1,5,12,3412345

Di sini a demonstration.

Kecil kemungkinan Anda menginginkan cara ini, tetapi saya ingin menunjukkannya. Dan ingat, String.Removemetode tidak menghapus karakter apa pun dalam string asli, ia mengembalikan string baru.


5

Mencoba string.Remove();

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

3

Metode TrimEnd mengambil larik karakter masukan dan bukan string. Kode di bawah ini dari Dot Net Perls , menunjukkan contoh yang lebih efisien tentang bagaimana melakukan fungsi yang sama seperti 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

Atau Anda dapat mengubahnya menjadi Char Array terlebih dahulu dengan:

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

Sekarang Anda memiliki setiap karakter indexed:

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

Mainkan saja


1

Coba di bawah ini

Sesuatu..TrimEnd (",". ToCharArray ());


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

keluaran:

1,5,12,34,123

Pertanyaannya tentang C # bukan VB.
metabuddy

0

Saat Anda memiliki spasi di bagian akhir. Anda bisa menggunakan beliow.

ProcessStr = ProcessStr.Replace(" ", "");
Emails     = ProcessStr.TrimEnd(';');
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.