J'ai récemment appris TextFieldParser
à analyser words
où précédemment j'utiliserais string.Split
pour le faire. Et j'ai une question concernant le nouvellement appris class
.StringSplitOptions.RemoveEmptyEntries équivalent pour TextFieldParser
Si nous analysons un message comme celui-ci en utilisant string.Split
avec StringSplitOptions.RemoveEmptyEntries
string message = "create myclass \"56, 'for better or worse'\""; //have multiple spaces
string[] words = message.Split(new char[] { ' ' }, 3, StringSplitOptions.RemoveEmptyEntries);
Ensuite, nous allons obtenir words
qui contiennent trois éléments comme celui-ci:
[0] create
[1] myclass
[2] "56, 'for better or worse'"
Mais si nous le faisons avec TextFieldParser
string str = "create myclass \"56, 'for the better or worse'\"";
var parser = new Microsoft.VisualBasic.FileIO.TextFieldParser(new StringReader(str)); //treat string as I/O
parser.Delimiters = new string[] { " " };
parser.HasFieldsEnclosedInQuotes = true;
string[] words2 = parser.ReadFields();
Le return
consistera en une words
sans texte
[0] create
[1]
[2]
[3]
[4] myclass
[5]
[6]
[7] "56, 'for better or worse'"
maintenant est là de façon équivalente pour enlever le vide words
dans le tableau résultant comme string.Split
StringSplitOptions.RemoveEmptyEntries
fait?
Cela ne semble pas un fichier CSV. Pourquoi voudriez-vous utiliser le [beaucoup plus lent] (http://stackoverflow.com/a/20456597/2316200) VB6 TextFieldParser au lieu de String.Split ou un Regex? –
@ Pierre-LucPineault Je ne sais pas si cela est normalement utilisé pour (seulement pour) le texte CSV, monsieur. Mais dans ma question précédente, deux personnes réputées me suggèrent d'utiliser ceci pour analyser mon texte et avec une meilleure performance. Depuis que je suis nouveau, j'ai fait confiance à leur jugement et l'utilise. Voici le post: http://stackoverflow.com/questions/34607051/parse-string-with-whitespace-and-quotation-mark Je serais heureux si vous pouviez donner une vision alternative – Ian
@ Pierre-LucPineault J'ai ouvert le lien vous avez donné et lu la différence de temps! Comment cela peut-il être! Voir le lien que je donne. L'opinion là-bas est assez différente. – Ian