Java String Split()方法

时间:2015-02-03 17:19:36

标签: java regex

我想知道以下行会做什么:

String parts = inputLine.split("\\s+");

这会简单地将字符串拆分为行中的任何空格吗?我认为这是一个正则表达式,但我以前从未见过它们。

4 个答案:

答案 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