2012-06-04 104 views
0

我想拆分字符串并创建一个集合,并遵循以下规则: 字符串应该被拆分为单词。如何拆分字符串保留空格和任意数量的 n字符

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

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

enter image description here

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

+1

你试过Regex.Split:

如果你真的想要删除\n S之间的空间,你可以用类似分裂? http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx – kol

回答

1

与分割这样的正则表达式:

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

喜欢的东西:

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

这不会删除任何空间可言,但并不要求那么应该罚款。

(?<=[\S\n])(?=\s)(?:[ \t]+(?=\n))? 
1

看起来像功课。因此,read up on \b

应该让你在正确的方向。

+0

这可能不会工作,因为它检测到'\ S'->'\ s'和'\ s'->'\ S' (其中只有一个是想要的),但不是'\ s'->'\ n'或'\ n'->'\ s'。 – Wormbo

+0

@Wormbo,这仅仅是为了让OP开始。 OP的规范没有正则表达式和魔力。因此,'\ b'(单词边界)可以说是唯一最好的起点。 –

+0

确实如此,但是从了解预定义的单词边界构造并知道更多基本构造来自己构建它,这有很大的提升空间。 – Wormbo

相关问题