J'ai ce qui suit:
string test = "9586-202-10072"
Comment pourrais-je obtenir tous les caractères à droite de la finale -donc 10072. Le nombre de caractères est toujours différent à droite du dernier tiret.
Comment cela peut-il être fait?
J'ai ce qui suit:
string test = "9586-202-10072"
Comment pourrais-je obtenir tous les caractères à droite de la finale -donc 10072. Le nombre de caractères est toujours différent à droite du dernier tiret.
Comment cela peut-il être fait?
Réponses:
Vous pouvez obtenir la position du dernier -avec str.LastIndexOf('-'). La prochaine étape est donc évidente:
var result = str.Substring(str.LastIndexOf('-') + 1);
Correction :
Comme Brian l'indique ci-dessous, l'utilisation de ceci sur une chaîne sans tirets entraînera le retour de la même chaîne.
LastIndexOfrenvoie -1 si rien n'est trouvé (il s'agit d'un comportement documenté, il est donc prudent de s'y fier). str.Substring(1-1)vous donne une chaîne égale à str. Pas de surprises, ici.
Vous pouvez utiliser LINQ et vous épargner l'analyse explicite:
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
Je peux voir que ce message a été vu plus de 46 000 fois. Je parie que beaucoup des 46 000 téléspectateurs posent cette question simplement parce qu'ils veulent juste le nom du fichier ... et ces réponses peuvent être un trou de lapin si vous ne pouvez pas rendre votre sous-chaîne textuelle en utilisant le signe arobase.
Si vous voulez simplement obtenir le nom du fichier, il existe une réponse simple qui doit être mentionnée ici. Même si ce n'est pas la réponse précise à la question.
result = Path.GetFileName(fileName);
voir https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
Voir la méthode String.lastIndexOf
string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");
if (indexOfHyphen >= 0)
{
string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
Console.WriteLine(contentAfterLastHyphen );
}
J'ai créé une extension de chaîne pour cela, j'espère que cela vous aidera.
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;
}
strou l' autre est nul ou s'il ne contient pas du tout de trait d'union. (Dans le cas où il n'y a pas de trait d'union, il ne lance pas; il renvoie la chaîne source entière.)