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?
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?
Yanıtlar:
Deneyin string.TrimEnd()
:
Something = Something.TrimEnd(',');
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.Remove
yöntem orijinal dizedeki herhangi bir karakteri kaldırmaz, yeni dizge döndürür.
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;
}
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
Sonunda boşluk olduğunda. beliow kullanabilirsin.
ProcessStr = ProcessStr.Replace(" ", "");
Emails = ProcessStr.TrimEnd(';');
string
? Virgülleriint
s'ye birleştiren bir döngü nedeniyle varsayıyorum . Bununstring.Join(",", ints)
yerine kullanabilirsiniz . Bu, ilk etapta virgüllerin arkasına gelmesini önler.