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?

pengguna3042186
sumber
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(',');
Raja Raja
sumber
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.

Soner Gönül
sumber
5

Mencoba string.Remove();

string str = "1,5,12,34,";
string removecomma = str.Remove(str.Length-1);
MessageBox.Show(removecomma);
shA.t
sumber
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;
}
bayu
sumber
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

Faisal Ashfaq
sumber
1

Coba di bawah ini

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

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

keluaran:

1,5,12,34,123
nambi_r88
sumber
Pertanyaannya tentang C # bukan VB.
metabuddy
0

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

ProcessStr = ProcessStr.Replace(" ", "");
Emails     = ProcessStr.TrimEnd(';');
Lahiru Gamage
sumber