StringSplitOptions.RemoveEmptyEntries等效于TextFieldParser

时间:2016-01-06 02:09:53

标签: c# parsing textfieldparser

我最近了解TextFieldParser来解析words以前我会使用string.Split这样做。我对新学习的class提出了一个问题。

如果我们使用string.SplitStringSplitOptions.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

1 个答案:

答案 0 :(得分:1)

可能会这样做

-(void) viewDidAppear:(BOOL)animated{
    self.preferredContentSize=yourImageView.contentSize;
}

一个班轮替代品可能是

parser.HasFieldsEnclosedInQuotes = true;
string[] words2 = parser.ReadFields();
words2 = words2.Where(x => !string.IsNullOrEmpty(x)).ToArray();