拆分具有多于或等于两个空格的字符串

时间:2016-10-19 22:04:36

标签: asp.net regex

我有一个字符串。我想把字符串分割成不均匀的白色空格。如果空格大于或等于2个空格的长度比我希望它们在单独的数组项中,但如果只有一个空格,那么我希望它们在同一个数组项中,以便例如。

我有这个字符串

1234  This is a Test                     PASS            1255432              12/21/2016   07:14:11

所以当我拆分上面的字符串时,它应该是这样的

arr(0) = 1234
arr(1) = This is a test ' because it has only one space in between, it     there are more or equal to two spaces than I want it to be a seperate item in an array
arr(2) = Pass
arr(3) =   1255432
arr(4) = 12/21/2016
arr(5) = 07:14:1

以下字符串相同:

0001  This is a Marketing text_for the students       TEST2              468899                           12/23/2016   06:23:16

当我拆分上面的字符串时,它应该是这样的:

arr(0)=0001
 arr(1) = This is a Marketing text_for the students
 arr(2) = Test2
 arr(3)=468899
 arr(4)=12/23/2016
 arr(5) = 06:23:16

是否有任何正则表达式可以帮助我根据空格拆分字符串,但如果空格大于或等于2则将这些字放在一起。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这可以通过这个正则表达式(\ s {0,1} \ S +)+完成,如下所示:

           string text = "0001  This is a Marketing text_for the students     TEST2              468899                           12/23/2016   06:23:16";
            Regex regex = new Regex(@"(\s{0,1}\S+)+");

            var matches = regex.Matches("0001  This is a Marketing text_for the students       TEST2              468899                           12/23/2016   06:23:16").Cast<Match>()
                                    .Select(m => m.Value)
                                      .ToArray();

            Console.WriteLine(String.Join( ",", matches));

这是一个有效的java脚本片段。

var value = "0001  This is a Marketing text_for the students       TEST2              468899                           12/23/2016   06:23:16";
var matches = value.match(
     new RegExp("(\\s{0,1}\\S+)+", "gi")
);
console.log(matches)

这个正则表达式(\s{0,1}\S+)+的工作原理是在每次匹配的乞讨时用\ s {0,1}匹配0或1个空格,然后任何数量的不是空格的东西用\ S +然后匹配这个通过将它包含在括号中并使用+运算符(...)+,可以将整个事物任意多次,这允许将单个空格字符组合在一起。