需要使用所有正则表达式模式传递给java.lang.String.split()
方法,以使用所有空格字符('','\ t','\ n'等)将字符串拆分为子字符串数组定界符?
答案 0 :(得分:920)
中的某些内容
myString.split("\\s+");
将所有空格分组为分隔符。
所以,如果我有字符串:
"Hello[space][tab]World"
这应该会产生字符串"Hello"
和"World"
,并省略[space]
和[tab]
之间的空白区域。
正如VonC指出的那样,反斜杠应该被转义,因为Java会首先尝试将字符串转义为特殊字符,并发送 进行解析。您想要的是文字"\s"
,这意味着您需要传递"\\s"
。它可能会有点混乱。
\\s
相当于[ \\t\\n\\x0B\\f\\r]
答案 1 :(得分:85)
在大多数正则表达方言中,有一组方便的字符摘要可用于此类事情 - 这些都是值得记住的好词:
\w
- 匹配任何单词字符。
\W
- 匹配任何非字符。
\s
- 匹配任何空格字符。
\S
- 匹配除空白字符之外的任何内容。
\d
- 匹配任何数字。
\D
- 匹配除数字之外的任何内容。
搜索“Regex Cheatsheets”应该会奖励你很多有用的摘要。
答案 2 :(得分:61)
要在Javascript 中使用,我必须执行以下操作:
myString.split(/\s+/g)
答案 3 :(得分:35)
“\\ s +”应该做的伎俩
答案 4 :(得分:10)
此外,您可能拥有UniCode不间断空格xA0 ...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
答案 5 :(得分:10)
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");
答案 6 :(得分:8)
Apache Commons Lang有一种方法可以将带有空格字符的字符串拆分为分隔符:
StringUtils.split("abc def")
这可能比正则表达式更容易使用。
答案 7 :(得分:2)
因为它是一个正则表达式,并且我假设你也不希望非字母数字字符如逗号,点等可以被空格包围(例如“一,二”应该给[一] [两个] ]),它应该是:
myString.split(/[\s\W]+/)
答案 8 :(得分:2)
我很惊讶没有人提到没有参数的String.split()。这不是它的目的吗?如:
"abc def ghi".split()
答案 9 :(得分:2)
要使用 任意Unicode空格 分割字符串,您需要使用
s.split("(?U)\\s+")
^^^^
(?U)
内联嵌入式标志选项与Pattern.UNICODE_CHARACTER_CLASS
等效,它使\s
速记字符类可以匹配空白Unicode类别的任何字符。
如果要拆分空格并在结果数组中保留空格,请使用
s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")
请参见regex demo。参见Java demo:
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, , »]
答案 10 :(得分:1)
您可以使用以下语句按换行符拆分字符串:
String textStr[] = yourString.split("\\r?\\n");
您可以使用以下语句按空格分割字符串:
String textStr[] = yourString.split("\\s+");
答案 11 :(得分:1)
String str = "Hello World";
String res[] = str.split("\\s+");
答案 12 :(得分:1)
您所需要的只是使用 Java Ragex Engine 的特殊字符之一进行拆分,
那就是- 空白字符
[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
代表所有类型的空格,包括单个空格 [ ]
、制表符 {{1} } 或任何类似的东西。
所以,如果你尝试会像这样-
[ ]
您将获得所需的输出。
一些非常有用的链接:
希望,这可能对你有最大的帮助!!!
答案 13 :(得分:-1)
研究这段代码..祝你好运
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);
}
}
}