我需要传递给 java.lang.String.split() 方法以使用所有空白字符(' ','\t','\n'等)作为分隔符将字符串拆分为子字符串数组的正则表达式模式?
java.lang.String.split()
因为它是一个正则表达式,并且我假设你也不会想要逗号,点等可以被空白包围的非字母数字字符(例如“一,二”应该给[一] [两]),它应该是:
myString.split(/[\s\W]+/)
我很惊讶没有人提到没有参数的String.split() . 这不是它的目的吗?如:
"abc def ghi".split()
您可以使用以下语句按换行符拆分字符串:
String textStr[] = yourString.split("\\r?\\n");
您可以使用以下语句通过Whitespace拆分字符串:
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); } } }
有些东西
myString.split("\\s+");
这将所有空格分组为分隔符 .
所以,如果我有字符串:
"Hello[space][tab]World"
这应该产生字符串 "Hello" 和 "World" 并省略 [space] 和 [tab] 之间的空白区域 .
"Hello"
"World"
[space]
[tab]
正如VonC指出的那样,反斜杠应该被转义,因为Java会首先尝试将字符串转义为特殊字符,然后发送它进行解析 . 你想要的是文字 "\s" ,这意味着你需要传递 "\\s" . 它可能会有点混乱 .
"\s"
"\\s"
\\s 相当于 [ \\t\\n\\x0B\\f\\r]
\\s
[ \\t\\n\\x0B\\f\\r]
在大多数正则表达方言中,有一组方便的字符摘要可用于此类事情 - 这些都是值得记住的好方法:
\w - 匹配任何单词字符 .
\w
\W - 匹配任何非单词字符 .
\W
\s - 匹配任何空白字符 .
\s
\S - 匹配除空白字符之外的任何内容 .
\S
\d - 匹配任何数字 .
\d
\D - 匹配除数字之外的任何内容 .
\D
搜索“Regex Cheatsheets”应该会奖励你很多有用的摘要 .
为了使这个工作 in 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)
这可能比正则表达式更容易使用 .
12 回答
因为它是一个正则表达式,并且我假设你也不会想要逗号,点等可以被空白包围的非字母数字字符(例如“一,二”应该给[一] [两]),它应该是:
我很惊讶没有人提到没有参数的String.split() . 这不是它的目的吗?如:
您可以使用以下语句按换行符拆分字符串:
您可以使用以下语句通过Whitespace拆分字符串:
研究这段代码..祝你好运
有些东西
这将所有空格分组为分隔符 .
所以,如果我有字符串:
"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”应该会奖励你很多有用的摘要 .
为了使这个工作 in Javascript ,我必须做以下事情:
“\ s”应该可以解决问题
你也可以拥有一个UniCode不间断空间xA0 ......
Apache Commons Lang有一种方法可以将带有空格字符的字符串拆分为分隔符:
http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)
这可能比正则表达式更容易使用 .