-1
votes

La virgule de pointe en C # provoque une exception du système

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? XXX


4 commentaires

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 ()


.split (nouveau [] {','}, stringsplitoptions.remoPeemptyentries)


string.join renvoie une chaîne que vous essayez d'attribuer à une liste list et que vous n'utilisez jamais Dataset Après, votre conception est donc défectueuse. Comme indiqué par @charlesp, à INT.TRYPARSE 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.


4 Réponses :


1
votes

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);
}


2 commentaires

@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.



1
votes

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 () peut le faire. Mais il est proprement mieux d'utiliser tryparse () plutôt que parse (wich sera appelé par convert.toint32 () ). Analyse est l'enfant d'affiche de lancer des exceptions vexées. Quelle est la raison pour laquelle tryparse () a été ajouté avec la première mise à jour du framework, 2.0 xxx


1 commentaires

Vous manquez le premier paramètre sur Tryparse



0
votes

string.join renvoie une chaîne que vous essayez d'attribuer à une liste list et que vous n'utilisez jamais Dataset après, votre conception est donc imparfaite.

aussi vous devez écrire trimstart (',') car il faut un char et non une chaîne .

Vous avez seulement besoin, comme les autres mentionnées, à INT.TRYPARSE et vérifiez si le résultat est vrai pour ajouter la valeur convertie sur le succès: xxx

vous pouvez donc supprimer l'essai attraper.


0 commentaires

0
votes

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();


0 commentaires