在所有空格处拆分字符串

Cyc*_*one 15 .net vb.net

我需要在所有空格中分割一个字符串,它应该只包含单词本身.

我怎么能在vb.net中这样做?

标签,换行符等必须全部拆分!

这已经困扰了我很长一段时间,因为我的语法高亮显示我完全忽略了除第一行之外的每一行中的第一个单词.

Jim*_*mmy 23

String.Split()(无参数)会在所有空格上分割(包括LF/CR)

  • @ToolMakerSteve - 删除空元素`String.Split(new char[] {}, StringSplitOptions.RemoveEmptyEntries)` (3认同)
  • 因为它解析为Split(params char [])重载,带有一个空数组.该重载的文档提到了这种行为. (2认同)
  • 注意:正如Johannes Rudolph在他的回答中提到的,如果一行中有多个空格字符,String.Split将包含空元素.这就是为什么鲁本斯法里亚斯的回答是优越的. (2认同)
  • @Joe 好主意,谢谢!更简单:`line.Split((char[])null, StringSplitOptions.RemoveEmptyEntries)` (2认同)

Rub*_*ias 18

试试这个:

Regex.Split("your string here", "\s+")
Run Code Online (Sandbox Code Playgroud)


Ada*_*lph 5

如果您想避免使用regex,可以这样做:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit"
    .Split()
    .Where(x => x != string.Empty)
Run Code Online (Sandbox Code Playgroud)

相当于Visual Basic:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit" _
    .Split() _
    .Where(Function(X$) X <> String.Empty)
Run Code Online (Sandbox Code Playgroud)

Where(),因为如果你的字符串有彼此相邻的多个空格字符,它消除了空字符串,这将导致从是很重要的Split()

在撰写本文时,当前接受的答案(/sf/answers/109410031/)没有考虑到这一点。

  • 很好的解决方案。它不仅避免了需要Regex参考,而且速度更快(请参阅下面的我的文章)。我想补充一点,我不认为VB使用了lambda运算符“ =&gt;”,所以它的VB版本有点不同,我认为是这样的:s.Split()。Where(Function( x)x &lt;&gt; String.Empty) (3认同)