Ich habe folgendes:
string test = "9586-202-10072"
Wie würde ich alle Zeichen rechts vom Finale -so 10072 bekommen. Die Anzahl der Zeichen unterscheidet sich immer rechts vom letzten Strich.
Wie kann das gemacht werden?
Ich habe folgendes:
string test = "9586-202-10072"
Wie würde ich alle Zeichen rechts vom Finale -so 10072 bekommen. Die Anzahl der Zeichen unterscheidet sich immer rechts vom letzten Strich.
Wie kann das gemacht werden?
Antworten:
Sie können die Position des letzten -mit erhalten str.LastIndexOf('-'). Der nächste Schritt liegt also auf der Hand:
var result = str.Substring(str.LastIndexOf('-') + 1);
Korrektur :
Wie Brian weiter unten ausführt, führt die Verwendung dieser Zeichenfolge für eine Zeichenfolge ohne Bindestriche dazu, dass dieselbe Zeichenfolge zurückgegeben wird.
LastIndexOf-1 , wenn nichts gefunden wird (dieses Verhalten dokumentiert ist, so dass es sicher ist darauf zu verlassen). str.Substring(1-1)gibt Ihnen eine Zeichenfolge gleich str. Keine Überraschungen hier.
Sie könnten LINQ verwenden und sich das explizite Parsen ersparen:
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
Ich kann sehen, dass dieser Beitrag über 46.000 Mal angesehen wurde. Ich würde wetten, dass viele der 46.000 Zuschauer diese Frage nur stellen, weil sie nur den Dateinamen wollen ... und diese Antworten können ein Kaninchenbau sein, wenn Sie Ihre Teilzeichenfolge nicht wörtlich mit dem at-Zeichen erstellen können.
Wenn Sie einfach den Dateinamen erhalten möchten, gibt es eine einfache Antwort, die hier erwähnt werden sollte. Auch wenn es nicht die genaue Antwort auf die Frage ist.
result = Path.GetFileName(fileName);
Siehe https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
Siehe String.lastIndexOf- Methode
string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");
if (indexOfHyphen >= 0)
{
string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
Console.WriteLine(contentAfterLastHyphen );
}
Ich habe eine String-Erweiterung dafür erstellt, hoffe es hilft.
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;
}
strschlägt nur fehl, wenn entweder null ist oder überhaupt keinen Bindestrich enthält. (In dem Fall, in dem es keinen Bindestrich gibt, wird nicht geworfen; es wird die gesamte