简体   繁体   English

如何按空格分割数据

[英]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));

See the C# demo 参见C#演示

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM