Bir dizedeki son belirli karakteri kaldır c #


88

WinForms c # kullanıyorum. Aşağıdaki gibi string değerim var,

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

Bir dizedeki son virgülü kaldırmam gerekiyor. Peki nasıl silebilirim?


16
Neden böyle bir var string? Virgülleri ints'ye birleştiren bir döngü nedeniyle varsayıyorum . Bunun string.Join(",", ints)yerine kullanabilirsiniz . Bu, ilk etapta virgüllerin arkasına gelmesini önler.
— Tim Schmelter

Yanıtlar:


262

Deneyin string.TrimEnd():

Something = Something.TrimEnd(',');

5
Bu en iyi çözümdür çünkü dizenin aslında virgülle bitip bitmediğini önceden bilmediğiniz durumlar da dahil olmak üzere tüm dizeler için çalışır.
— East of Nowhere

6
Bu yüzden kendi kendime kolayca yazabildiğim şeyler için bile çözüm arayışındayım. Genellikle başka biri çözer. :)
— dpberry178

1
Yani tek alıntılar bir hata değildi. Bugün, char ve string'in sırasıyla tek ve çift tırnakla tanımlandığını öğrendim.
— egmfrs

20

King King'in cevabı elbette doğru. Ayrıca Tim Schmelter'in yorumu da sizin durumunuz için iyi bir öneri.

Ancak bir dizedeki son virgülü gerçekten kaldırmak istiyorsanız , son virgülün dizinini bulmalı ve benzerlerini kaldırmalısınız;

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

Çıktı;

1,5,12,3412345

Burada a demonstration.

Bu şekilde istemeniz pek olası değil ama bunu belirtmek istiyorum. Ve unutmayın, String.Removeyöntem orijinal dizedeki herhangi bir karakteri kaldırmaz, yeni dizge döndürür.


5

Deneyin string.Remove();

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

3

TrimEnd yöntemi bir dizge değil, bir girdi karakter dizisi alır. Aşağıdaki Dot Net Perls kodu , TrimEnd ile aynı işlevselliğin nasıl gerçekleştirileceğine dair daha verimli bir örnek göstermektedir.

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

Ya da önce bunu Char Array'e dönüştürebilirsiniz:

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

Artık her karaktere sahipsiniz indexed:

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

Etrafında oyna


1

Aşağıda deneyin

Bir şey..TrimEnd (",". ToCharArray ());


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

çıktı:

1,5,12,34,123

Soru C # ile ilgiliydi, VB değil.
— 2018

0

Sonunda boşluk olduğunda. beliow kullanabilirsin.

ProcessStr = ProcessStr.Replace(" ", "");
Emails     = ProcessStr.TrimEnd(';');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.