Je dois retourner le nombre maximum d'une série de chiffres. J'ai un cas d'avance dans lequel je pourrais avoir une virgule de premier plan. Comment puis-je supprimer la virgule de pointe de sorte que l'application ne casse pas?
4 Réponses :
Si c'est le seul problème, vous pouvez faire:
foreach (string x in dataSet) { if (Int32.TryParse(x, out int x2)) parsedDataSet.Add(x2); }
@Olivierrogier hehe probablement et la console.Readline, parce que qui le fait jamais dans une demande réelle.
@Olivierrogier Je n'ai pas eu le cas d'utilisation jusqu'à présent. Vous voyez la console.Readline à l'école, mais c'est tout. Programmes qui lisent des fichiers, une API, Web ou avec GIIS OUI. Mais un programme où quelqu'un taperait quelque chose dans une console? Ce n'est pas convivial et juste Clunky d'utiliser IMHO. Je suis désolé si j'écrase vos souvenirs d'aventure de texte avec mon attitude.
Le problème ne devrait pas être la virgule principale, mais la chaîne vide qui se divise génère pour le "avant".
Vérifiez cette chaîne pour validité avant de l'analyser. string.isnullorwhiteespace () code> peut le faire. Mais il est proprement mieux d'utiliser
tryparse () code> plutôt que
parse code> (wich sera appelé par
convert.toint32 () code>). Analyse est l'enfant d'affiche de lancer des exceptions vexées. Quelle est la raison pour laquelle
tryparse () code> a été ajouté avec la première mise à jour du framework, 2.0 p>
Vous manquez le premier paramètre sur Tryparse
Vous avez seulement besoin, comme les autres mentionnées, à vous pouvez donc supprimer l'essai attraper. em> p> p> p> string.join code> renvoie une chaîne code> que vous essayez d'attribuer à une liste
list
Dataset code> après, votre conception est donc imparfaite. strong>
trimstart (',') code> car il faut un char et non une chaîne . strong> p>
INT.TRYPARSE CODE> et vérifiez si le résultat est vrai pour ajouter la valeur convertie sur le succès: P>
Si votre chaîne a une virgule de départ, la matrice résultante aura son premier élément vide. Parce que vous ne voulez pas que ceux-ci, indiquez Split code> à ne pas retourner éléments vides pour commencer par:
List<string> dataSet = userInput.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
La question ne devrait pas être la principale virgule, mais la chaîne vide qui se divise génère pour le "avant". Juste vérifier
string.isnullorwhiteespace () code>
.split (nouveau [] {','}, stringsplitoptions.remoPeemptyentries) code>
string.join code> renvoie une chaîne code> que vous essayez d'attribuer à une liste
list code> et que vous n'utilisez jamais
Dataset code> Après, votre conception est donc défectueuse. Comme indiqué par @charlesp, à
INT.TRYPARSE CODE> et vérifiez si le résultat est vrai pour ajouter la valeur convertie sur le succès.
@Gserg Veuillez entrer cela comme une réponse. C'est la solution que je connecte.