什么正则表达式模式需要传递给java.lang.String.split()
方法,使用所有空格字符('','\ t','\n'等)作为分隔符将String拆分为子串数组?
有些东西
myString.split("\\s+");
这将所有空格分组为分隔符.
所以,如果我有字符串:
"Hello[space][tab]World"
这应该产生字符串"Hello"
,"World"
并省略[space]
和之间的空白空间[tab]
.
正如VonC指出的那样,反斜杠应该被转义,因为Java会首先尝试将字符串转义为特殊字符,然后发送它进行解析.你想要的是文字"\s"
,这意味着,你需要通过"\\s"
.它可能会有点混乱.
在\\s
相当于[ \\t\\n\\x0B\\f\\r]
在大多数正则表达方言中,有一组方便的字符摘要可用于此类事情 - 这些都是值得记住的好方法:
\w
- 匹配任何单词字符.
\W
- 匹配任何非单词字符.
\s
- 匹配任何空白字符.
\S
- 匹配除空格字符之外的任何内容.
\d
- 匹配任何数字.
\D
- 匹配除数字之外的任何内容.
搜索"Regex Cheatsheets"应该会奖励你很多有用的摘要.
为了在Javascript中工作,我必须执行以下操作:
myString.split(/\s+/g)
"\\ s +"应该可以解决问题
你也可以拥有一个UniCode不间断空间xA0 ......
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
String string = "Ram is going to school"; String[] arrayOfString = string.split("\\s+");
Apache Commons Lang有一种方法可以将带有空格字符的字符串拆分为分隔符:
StringUtils.split("abc def")
http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)
这可能比正则表达式更容易使用.