什么正则表达式模式需要我传递到java.lang.String.split()将字符串分割成使用所有空白字符(' ', '\t', '\n'等)作为分隔符的子字符串数组?
java.lang.String.split()
' '
'\t'
'\n'
“\\s+”应该可以
在大多数正则表达式方言中,都有一组方便的字符摘要可以用于这种事情——这些都是需要记住的:
\w -匹配任何单词字符
\w
\W -匹配任何非单词字符。
\W
\s -匹配任何空白字符。
\s
\S -匹配除空白字符以外的任何字符。
\S
\d -匹配任何数字
\d
\D -匹配除数字以外的任何内容。
\D
搜索“Regex Cheatsheets”,你会得到很多有用的摘要。
之类的东西
myString.split("\\s+");
这将所有空格分组为分隔符。
如果我有一个字符串:
"Hello[space character][tab character]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]
因为它是一个正则表达式,我假设你也不会想要非字母数字字符,如逗号,点,等,可以被空格包围(例如。“one, two”应该给出[one][two]),它应该是:
myString.split(/[\s\W]+/)
为了让这个在Javascript中工作,我必须做以下工作:
myString.split(/\s+/g)
Apache Commons Lang有一个方法可以用空白字符作为分隔符分割字符串:
StringUtils.split("abc def")
< a href = " http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html分裂(以)" > http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html分裂(以)< / >
这可能比正则表达式模式更容易使用。
你可以使用下面的语句用换行符分割字符串:
String textStr[] = yourString.split("\\r?\\n");
你可以使用下面的语句用空格分割字符串:
String textStr[] = yourString.split("\\s+");
你也可以有一个UniCode不间断空格xA0…
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
String str = "Hello World"; String res[] = str.split("\\s+");
String string = "Ram is going to school"; String[] arrayOfString = string.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); } } }
要使用任何Unicode空白分隔字符串,您需要使用
s.split("(?U)\\s+") ^^^^
(?U)内联嵌入式标志选项相当于Pattern.UNICODE_CHARACTER_CLASS,它允许\s简写字符类匹配空白Unicode类别中的任何字符。
(?U)
Pattern.UNICODE_CHARACTER_CLASS
如果你想用空格和将空格保留在结果数组中分隔,请使用
s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")
请看regex演示。看到# EYZ1:
String s = "Hello\t World\u00A0»"; System.out.println(Arrays.toString(s.split("(?U)\\s+"))); // => [Hello, World, »] System.out.println(Arrays.toString(s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)"))); // => [Hello, , World, , »]
你所需要的就是使用Java Ragex引擎的特殊字符之一进行分割,
那就是- 空格字符
[0-9]
[^0-9]
[ \t\n\x0B\f\r]
[^\s]
[\n\x0B\f\r\x85\u2028\u2029]
[^\v]
[a-zA-Z_0-9]
[^\w]
要记住的是,小字母字符\s表示所有类型的空白,包括单个空格[ ],制表符[ ]或类似的内容。
[ ]
所以,如果你尝试一下会像这样
String theString = "Java<a space><a tab>Programming" String []allParts = theString.split("\\s+");
您将得到所需的输出。
一些非常有用的链接:
希望,这可能会帮助你最好!!