我想知道以下行会做什么:
String parts = inputLine.split("\\s+");
这会简单地将字符串拆分为行中的任何空格吗?我认为这是一个正则表达式,但我以前从未见过它们。
答案 0 :(得分:2)
是的,因为documentation states split
将正则表达式作为参数。
正则表达式\s
表示包含空格字符的character class,如:
\t
," "
,\n
\r
+
是quantifier,可以将其读作“一次或多次”,这使\s+
代表来自一个或多个空格的文本构建。
我们需要将此正则表达式编写为"\\s+
(带有两个反斜杠),因为在字符串\
中被视为特殊字符,需要转义(使用另一个反斜杠)才能生成\
字面值。
因此split("\\s+")
将生成由一个或多个空格分隔的标记数组。删除了BTW尾随空元素,因此"a b c ".split("\\s+")
将返回数组["a", "b", "c"]
而不是["a", "b", "c", ""]
。
答案 1 :(得分:0)
是的,但实际上任何数量的空间元字符(包括制表符,换行符等)。请参阅Java documentation on Patterns。
答案 2 :(得分:0)
它会将字符串拆分为一个(或多个)连续的空格字符。 Pattern
Javadoc描述了预定义的字符类(其中\s
是一个),
预定义的字符类
. Any character (may or may not match line terminators) \d A digit: [0-9] \D A non-digit: [^0-9] \s A whitespace character: [ \t\n\x0B\f\r] \S A non-whitespace character: [^\s] \w A word character: [a-zA-Z_0-9] \W A non-word character: [^\w]
请注意,\\
是要根据需要转义反斜杠以将其嵌入String
。
答案 3 :(得分:0)
是的,它会分割标签和空格:
String t = "test your function aaa";
for(String s : t.split("\\s+"))
System.out.println(s);
输出:
test your function aaa