[英]Splitting a string on a number of whitespaces using Regex and VB.NET
我有一个以下格式的表:
col1 col2 col3 col4 col5 col6
test 300 25.5 14 345 11
test2 100 23 11 203
test3 31 44 175
因此,即使设置了列数并且对齐了列,某些列也可以为空白。 列之间的间隔至少为2个空格字符。 所以我正在使用:
If Regex.Split(line, "[ ]{2,}").Length = 6 Then
sw.WriteLine("col1: " & Regex.Split(line, "[ ]{2,}")(0))
sw.WriteLine("col2: " & Regex.Split(line, "[ ]{2,}")(1))
sw.WriteLine("col3: " & Regex.Split(line, "[ ]{2,}")(2))
sw.WriteLine("col4: " & Regex.Split(line, "[ ]{2,}")(3))
sw.WriteLine("col5: " & Regex.Split(line, "[ ]{2,}")(4))
sw.WriteLine("col6: " & Regex.Split(line, "[ ]{2,}")(5))
End If
在捕获每一行并将其写入流编写器的循环中。
如果某些列值不丢失,它将很好地工作。 在上面的示例中,第一行可以正常运行,但是对于第二行和第三行, Regex.Split(line, "[ ]{2,}").Length
将分别返回5和4。 有解决方法吗? 我想要Regex.Split(line, "[ ]{2,}").Length
返回6作为列数,并用空格填充数组的相应部分。
我不确定您的预期输出是什么,尽管为分割的空间设置最大数量应该可以:
string[] s = Regex.Split(line, @"\s{2,6}");
码:
string line;
while ((line = Console.ReadLine()) != null) {
// Console.WriteLine(line); // original output
string[] s = Regex.Split(line, @"\s{2,6}");
int i = 0;
foreach (string word in s) {
i++;
Console.WriteLine("col"+i+": " + word);
}
}
例:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.