J'ai une chaîne comme ceci:Retour l'a déclaré à variable int.TryParse avec LINQ à partir d'une liste de chaînes
/Localisation/12345/
Mais je ne ai besoin le numéro 12345.
la fonction suivante retourne le nombre:
private int GetNumberFromString(string location = "/Location/12345/")
{
var id = 0;
var strings = location.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
strings.FirstOrDefault(t => int.TryParse(t, out id));
return id;
}
Je voudrais faire quelque chose comme ceci:
private int GetNumberFromString(string location = "/Location/12345/")
{
var strings = location.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
return strings.FirstOrDefault(t => int.TryParse(t, out var id));
}
Mais qui retourne chaîne et non int.
Est-il possible de déclarer l'ID de la variable dans int.TryParse et de le renvoyer immédiatement? Ou y a-t-il une meilleure solution pour cela?
_ "Je voudrais faire quelque chose comme ça" _ - pourquoi? Vous renvoyez la première chaîne où la valeur de retour de int.TryParse() 'est' true', pas son 'int int id'. Quel problème essayez-vous de résoudre? Quelle "meilleure solution" recherchez-vous? Un code plus court n'est pas toujours meilleur. – CodeCaster
Utilisez-vous C# 7.0? –
"Existe-t-il une meilleure solution"? Eh bien, ce que vous demandez n'a pas beaucoup de sens - pour un, pourquoi exiger la déclaration d'un paramètre «out» en ligne? Quoi qu'il en soit, l'extraction d'un motif spécifique d'une chaîne est généralement résolue avec des expressions régulières: 'Convert.ToInt32 (Regex.Match ("/Location/12345/", @" \ d + "). Groups [0] .Value)' – BurnsBA