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.