StringSplitOptions.RemoveEmptyEntries 相当于 TextFieldParser
StringSplitOptions.RemoveEmptyEntries equivalent for TextFieldParser
我最近学习 TextFieldParser
来解析 words
,而以前我会使用 string.Split
来解析。我有一个关于新学的问题 class
.
如果我们使用 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'"
现在是否有与 string.Split
StringSplitOptions.RemoveEmptyEntries
相同的方法来删除结果数组中的空 words
?
也许这样就可以了
parser.HasFieldsEnclosedInQuotes = true;
string[] words2 = parser.ReadFields();
words2 = words2.Where(x => !string.IsNullOrEmpty(x)).ToArray();
一个班轮替代方案可以是
string[] words2 = parser.ReadFields().Where(x => !string.IsNullOrEmpty(x)).ToArray();
我最近学习 TextFieldParser
来解析 words
,而以前我会使用 string.Split
来解析。我有一个关于新学的问题 class
.
如果我们使用 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'"
现在是否有与 string.Split
StringSplitOptions.RemoveEmptyEntries
相同的方法来删除结果数组中的空 words
?
也许这样就可以了
parser.HasFieldsEnclosedInQuotes = true;
string[] words2 = parser.ReadFields();
words2 = words2.Where(x => !string.IsNullOrEmpty(x)).ToArray();
一个班轮替代方案可以是
string[] words2 = parser.ReadFields().Where(x => !string.IsNullOrEmpty(x)).ToArray();