[英]How to split data by whitespace
I have data in a text: 我在文本中有数据:
WS 6 WS 6
WH 11 11号
WD 6 西数6
WC 8 WC 8
WN 9 WN 9
NS 7 NS 7
NH 2 NH 2
ND 6 ND 6
NC 5 NC 5
NN 4 神经网络4
ES 6 ES 6
EH 11 EH 11
ED 6 第6版
EC 8 EC 8
EN 9 EN 9
and I want to split them to a string array like: 我想将它们拆分为一个字符串数组,例如:
string[0] array=
"W S 6
W H 11
W D 6
W C 8
W N 9";
string[0] array=
"N S 7
N H 2
N D 6
N C 5";
string[0] array=
"N N 4
E S 6
E H 11
E D 6
E C 8
E N 9";
I had been do: 我曾经做过:
using(StreamReader reader = new StreamReader(uploadedFile.InputStream))
{
string read = reader.ReadToEnd();
string[] Array = Regex.Split(read,"\n");
}
But It cannot done, Pleas help me. 但是它做不到,请帮我。
You tried to split by newline ( \\n
). 您尝试按换行符(
\\n
)分割。 You need to split by space: 您需要按空间划分:
using(StreamReader reader = new StreamReader(uploadedFile.InputStream))
{
string read = reader.ReadToEnd();
string[] Array = Regex.Split(read," ");
}
Or even better by whitespace (space, tab, ...) 甚至更好的是空格(空格,制表符,...)
string[] Array = Regex.Split(read,"\s");
您可以使用它在换行符上拆分文本。
string[] array = read.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
You need to split with double line break: 您需要使用双换行符进行拆分:
var read = "W S 6\r\nW H 11\r\nW D 6\r\nW C 8\r\nW N 9\r\n\r\nN S 7\r\nN H 2\r\nN D 6\r\nN C 5\r\n\r\nN N 4\r\nE S 6\r\nE H 11\r\nE D 6\r\nE C 8\r\nE N 9";
var arr = read.Split(new[] {"\r\n\r\n", "\n\n"}, StringSplitOptions.RemoveEmptyEntries);
Console.Write(string.Join("\n-- NEXT ITEM ----\n", arr));
Output: 输出:
W S 6
W H 11
W D 6
W C 8
W N 9
-- NEXT ITEM ----
N S 7
N H 2
N D 6
N C 5
-- NEXT ITEM ----
N N 4
E S 6
E H 11
E D 6
E C 8
E N 9
Note that if your line breaks are not consistent, you will have to add all possible variations to the first Split
argument. 请注意,如果换行符不一致,则必须将所有可能的变体添加到第一个
Split
参数中。
Or use a Regex.Split
: 或使用
Regex.Split
:
var arr = Regex.Split(read, @"(?:\r\n?|\n){3,}").Where(m => !string.IsNullOrEmpty(m));
See another C# demo . 参见另一个C#演示 。
Here, (?:\\r\\n?|\\n){3,}
matches 3 or more ( {3,}
is a limiting quantifier) line breaks: CR followed with an optional LF ( \\r\\n?
) or ( |
) an LF ( \\n
). 在这里,
(?:\\r\\n?|\\n){3,}
匹配3个或更多( {3,}
是一个限定符)换行符:CR后跟一个可选的LF( \\r\\n?
)或( |
)的LF( \\n
)。
See a regex demo here . 在此处查看正则表达式演示 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.