Ho il seguente:
string test = "9586-202-10072"
Come farei ad ottenere tutti i caratteri a destra dell'ultimo -trattino in modo da 10072. Il numero di caratteri è sempre diverso a destra dell'ultimo trattino.
Come si può fare?
Ho il seguente:
string test = "9586-202-10072"
Come farei ad ottenere tutti i caratteri a destra dell'ultimo -trattino in modo da 10072. Il numero di caratteri è sempre diverso a destra dell'ultimo trattino.
Come si può fare?
Risposte:
Puoi ottenere la posizione dell'ultimo -con str.LastIndexOf('-'). Quindi il passaggio successivo è ovvio:
var result = str.Substring(str.LastIndexOf('-') + 1);
Correzione :
Come afferma Brian di seguito, l'uso di questo su una stringa senza trattini comporterà la restituzione della stessa stringa.
LastIndexOfrestituisce -1 se non viene trovato nulla (questo è un comportamento documentato, quindi è sicuro fare affidamento su di esso). str.Substring(1-1)ti dà una stringa uguale a str. Nessuna sorpresa, qui.
Potresti usare LINQ e risparmiarti l'analisi esplicita:
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
Vedo che questo post è stato visto oltre 46.000 volte. Scommetto che molti dei 46.000 spettatori stanno facendo questa domanda semplicemente perché vogliono solo il nome del file ... e queste risposte possono essere una tana di coniglio se non puoi rendere la tua sottostringa alla lettera usando il segno at.
Se vuoi semplicemente ottenere il nome del file, c'è una semplice risposta che dovrebbe essere menzionata qui. Anche se non è la risposta precisa alla domanda.
result = Path.GetFileName(fileName);
vedere https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
Vedere il metodo String.lastIndexOf
string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");
if (indexOfHyphen >= 0)
{
string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
Console.WriteLine(contentAfterLastHyphen );
}
Ho creato un'estensione di stringa per questo, spero che aiuti.
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;
}
strè nullo o se non contiene affatto un trattino. (Nel caso in cui non ci sia un trattino non viene generato; restituisce l'intera stringa di origine.)