0

我想拆分字符串并创建一个集合,规则如下:字符串应该拆分成单词。

1) 如果字符串包含 '\n' 它应该被视为一个单独的 '\n' 单词。
2) 如果字符串包含多个 '\n' ,则应将其视为超过 '\n' 个单词。
3) 不应从字符串中删除空格。唯一的例外是,如果两个 \n 之间有空格,则可以忽略。

PS:我尝试了很多字符串拆分,首先拆分了 \n 字符并创建了一个集合,缺点是,如果我连续有两个 \n ,我无法在集合中创建两个虚拟词。任何帮助将不胜感激。

在此处输入图像描述

反正有没有使用正则表达式来做到这一点?

4

3 回答 3

1

看起来像家庭作业。因此,请继续阅读\b

应该让你朝着正确的方向前进。

于 2012-06-04T15:13:37.577 回答
1

阅读零宽度断言\s使用它们,您可以在 eg和\S不实际匹配任何相邻字符的情况下定义拆分位置。

编辑: 这是OP询问这些构造的另一个问题。

于 2012-06-04T16:03:45.883 回答
1

用这样的正则表达式拆分:

(?<=[\S\n])(?=\s)

就像是:

var substrings = Regex.Split(input, @"(?<=[\S\n])(?=\s)");

这根本不会删除任何空格,但这不是必需的,所以应该没问题。

如果您真的希望\n删除 s 之间的空格,可以使用以下内容进行拆分:

(?<=[\S\n])(?=\s)(?:[ \t]+(?=\n))?
于 2012-06-04T16:14:27.867 回答