Java String Split()方法

Java String Split()方法,java,regex,Java,Regex,我想知道下面这行会做什么: String parts = inputLine.split("\\s+"); 这会简单地在行中的任何空格处拆分字符串吗?我认为这是一个正则表达式,但我以前从未见过它们。是的,但实际上是任意数量的空格元字符(包括制表符、换行符等)。请参阅。它将在一个(或多个)连续空白字符上拆分字符串。将预定义的字符类(其中\s是其中之一)描述为 预定义字符类 . Any character (may or may not match line terminators) \d

我想知道下面这行会做什么:

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

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

是的,但实际上是任意数量的空格元字符(包括制表符、换行符等)。请参阅。

它将在一个(或多个)连续空白字符上拆分字符串。将预定义的字符类(其中
\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 t = "test your   function      aaa";

for(String s : t.split("\\s+"))
   System.out.println(s);
输出:

是,因为
split
将regex作为参数

在regex
\s
中,表示包含空格字符的类型,如:

  • 选项卡
    \t
  • 空格
  • 行分隔符
    \n
    \r
  • 更多
+
是一种可以被理解为“一次或多次”的代码,它使
\s+
表示从一个或多个空格生成的文本

我们需要将这个正则表达式写成
“\\s+
(带两个反斜杠),因为in-String
\
被认为是特殊字符,需要转义(带另一个反斜杠)来生成
\
文本


因此
split(\\s+”)
将生成一个由一个或多个空格分隔的令牌数组。顺便说一句,后面的空元素将被删除,因此
“abc”。split(\\s+”)
将返回数组
[“a”、“b”、“c”]
而不是
[“a”、“b”、“c”、”“]

您自己尝试过吗?这会导致类型不匹配,因为
String#split
返回的是
字符串[]
,而不仅仅是
字符串
test
your 
function
aaa