如何将任何空格字符作为分隔符分割string?

什么样的正则expression式模式需要我传递给java.lang.String.split()方法来使用所有空格字符('','\ t','\ n'等)将一个string拆分为一个子string数组。作为分隔符?

东西在线

 myString.split("\\s+"); 

这将所有空格分隔为一个分隔符。

所以,如果我有string:

"Hello[space][tab]World"

这应该产生string"Hello""World"并省略[space][tab]之间的空白空间。

正如VonC所指出的那样,反斜杠应该被转义,因为Java首先会尝试将string转义为特殊字符,然后发送这个string进行parsing。 你想要的是文字"\s" ,这意味着你需要通过"\\s" 。 它可能会有点混乱。

\\s相当于[ \\t\\n\\x0B\\f\\r]

在大多数正则expression式中,有一组方便的人物总结,可以用于这种事情 – 这些都是值得记住的好方法:

\w – 匹配任何单词字符。

\W – 匹配任何非单词字符。

\s – 匹配任何空白字符。

\S – 与空白字符匹配。

\d – 匹配任何数字。

\D – 匹配除数字以外的任何内容。

search“正则expression式Cheatsheets”应该会给你一大堆有用的总结。

为了使这个工作在Javascript中 ,我必须做到以下几点:

 myString.split(/\s+/g) 

“\\ s +”应该做的伎俩

你也可能有一个UniCode不间断空间xA0 …

 String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking 

Apache Commons Lang有一个方法可以用空白字符作为分隔符来分割string:

 StringUtils.split("abc def") 

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String);

这可能比正则expression式更容易使用。

 String string = "Ram is going to school"; String[] arrayOfString = string.split("\\s+"); 

既然它是一个正则expression式,而且我假设你也不想要像逗号,点等可以被空白包围的非字母数字字符(例如“one,two”应该给出[one] [two]),它应该是:

 myString.split(/[\s\W]+/) 

您可以使用以下语句通过换行来拆分string:

  String textStr[] = yourString.split("\\r?\\n"); 

您可以使用下面的语句通过空白分割一个string:

 String textStr[] = yourString.split("\\s+"); 
 String str = "Hello World"; String res[] = str.split("\\s+"); 

学习这个代码..祝你好运

  import java.util.*; class Demo{ public static void main(String args[]){ Scanner input = new Scanner(System.in); System.out.print("Input String : "); String s1 = input.nextLine(); String[] tokens = s1.split("[\\s\\xA0]+"); System.out.println(tokens.length); for(String s : tokens){ System.out.println(s); } } }