Недавно я узнал TextFieldParser
, чтобы разобрать words
, где раньше я использовал бы string.Split
. И у меня есть вопрос относительно недавно полученного class
.StringSplitOptions.RemoveEmptyEntries эквивалент для TextFieldParser
Если разобрать такое сообщение, используя string.Split
с StringSplitOptions.RemoveEmptyEntries
string message = "create myclass \"56, 'for better or worse'\""; //have multiple spaces
string[] words = message.Split(new char[] { ' ' }, 3, StringSplitOptions.RemoveEmptyEntries);
Тогда мы получим words
, которые содержат три элемента, как это:
[0] create
[1] myclass
[2] "56, 'for better or worse'"
Но если мы делаем это с 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();
Тогда return
будет состоять из некоторого words
без текста
[0] create
[1]
[2]
[3]
[4] myclass
[5]
[6]
[7] "56, 'for better or worse'"
Теперь есть эквивалентный способ удаления в результате массив пустой words
, как string.Split
StringSplitOptions.RemoveEmptyEntries
делает?
Это не похоже, как CSV. Почему вы хотите использовать [гораздо медленнее] (http://stackoverflow.com/a/20456597/2316200) VB6 TextFieldParser вместо String.Split или Regex? –
@ Pierre-LucPineault Я не знаю, обычно ли это используется для (только для) CSV-текста, сэр. Но в моем предыдущем вопросе два хорошо известных человека предлагают мне использовать это для анализа моего текста и с лучшей производительностью, о которой они говорили. Поскольку я новичок, я доверял их суждению и использовал это. Вот сообщение: http://stackoverflow.com/questions/34607051/parse-string-with-whitespace-and-quotation-mark Я был бы рад, если бы вы могли дать альтернативный взгляд – Ian
@ Pierre-LucPineault Я открыл ссылку, которая вы дали и прочитали разницу во времени! Как это может быть! См. Ссылку, которую я даю. Мнение там совсем другое. – Ian