Aşağıdakilere sahibim:
string test = "9586-202-10072"
Tüm karakterleri finalin sağına nasıl -getiririm yani 10072. Karakter sayısı her zaman son tirenin sağından farklıdır.
Bu nasıl yapılabilir?
Aşağıdakilere sahibim:
string test = "9586-202-10072"
Tüm karakterleri finalin sağına nasıl -getiririm yani 10072. Karakter sayısı her zaman son tirenin sağından farklıdır.
Bu nasıl yapılabilir?
Yanıtlar:
Geçen konumunu elde edebilirsiniz -ile str.LastIndexOf('-'). Yani bir sonraki adım açıktır:
var result = str.Substring(str.LastIndexOf('-') + 1);
Düzeltme :
Brian'ın aşağıda belirttiği gibi, bunu tire içermeyen bir dizede kullanmak aynı dizenin döndürülmesiyle sonuçlanacaktır.
LastIndexOfhiçbir şey bulunmazsa -1 döndürür (bu belgelenmiş bir davranıştır, bu yüzden ona güvenmek güvenlidir). str.Substring(1-1)size eşit bir dize verir str. Burada sürpriz yok.
LINQ kullanabilir ve açık ayrıştırmadan kendinizi kurtarabilirsiniz:
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
Bu gönderinin 46.000'den fazla kez görüntülendiğini görebiliyorum. Bahse girerim 46.000 izleyicinin çoğu bu soruyu sadece dosya adını istedikleri için soruyorlar ... ve eğer alt dizenizi at işaretini kullanarak kelimesi kelimesine yapamazsanız, bu cevaplar bir tavşan deliği olabilir.
Sadece dosya adını almak istiyorsanız, burada belirtilmesi gereken basit bir cevap var. Sorunun kesin cevabı olmasa bile.
result = Path.GetFileName(fileName);
bkz. https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
String.lastIndexOf yöntemine bakın
string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");
if (indexOfHyphen >= 0)
{
string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
Console.WriteLine(contentAfterLastHyphen );
}
Bunun için bir dize uzantısı oluşturdum, umarım yardımcı olur.
public static string GetStringAfterChar(this string value, char substring)
{
if (!string.IsNullOrWhiteSpace(value))
{
var index = value.LastIndexOf(substring);
return index > 0 ? value.Substring(index + 1) : value;
}
return string.Empty;
}
strveya hiç tire içermiyorsa başarısız olur . (Kısa çizginin olmadığı durumda atmaz; tüm kaynak dizesini döndürür.)