使用java中的正则表达式进行拆分,得到一个空元素

使用java中的正则表达式进行拆分,得到一个空元素,java,Java,我试图拆分字符串数组并使用分隔符删除任何空白(包括\t),但由于某种原因,我得到了一个空元素“” 我的代码: String temp = " x = x + 9"; String[] tempArr = temp.split("\\s+"); 我得到的结果是: tempArr[0] = "" tempArr[1] = "x" tempArr[2] = "=" ... 我不明白为什么我在数组的第一个索引中得到一个空元素。将split(“\s+”)更改为split(\\s+”)并在前面使用

我试图拆分字符串数组并使用分隔符删除任何空白(包括
\t
),但由于某种原因,我得到了一个空元素
“”

我的代码:

String temp = "    x = x + 9";
String[] tempArr = temp.split("\\s+");
我得到的结果是:

tempArr[0] = ""
tempArr[1] = "x"
tempArr[2] = "="
...

我不明白为什么我在数组的第一个索引中得到一个空元素。

split(“\s+”)
更改为
split(\\s+”)
并在前面使用
trim()
来去掉所有前导和尾随的额外空格

String[] tempArr = temp.trim().split("\\s+");
您使用的是分隔符,
“\\s+”
,在给定的字符串
“x=x+9”
中,字符串前面有空格,这意味着第一组空格用于分隔空单词和x

我将尝试给出一些不使用空格的示例:

String temp = ",a,b,c";
String[] tempArr = temp.split(",");
结果将是:

tempArr[0] = ""
tempArr[1] = "a"
tempArr[2] = "b"
tempArr[2] = "c"
你明白为什么吗?因为在第一个
“,”
前面有一个空字符串。空间也是如此


如果不希望第一个元素为空,请使用@PRC\u noob和@Pshemo已经建议的函数
.trim()
。它将删除字符串开头和结尾的空格。

这:
“\s+”
是打字错误,对吗?它应该是:
“\\s+”
。在
.split(…)
之前使用
.trim()
,以去除前导和尾随空格。“我不明白为什么我在数组的第一个索引中得到一个空元素。”使用
“AxB”。split(“x”)
会得到什么结果?如果出现
“xAxB”.split(“x”)
,该怎么办?现在只需用空格更改
x
。可能重复我的坏代码,我只关注将
\s
更改为
\\s
(这在我看来是不必要的,也不能解决实际问题,因为他必须使用
\\s
来获得任何结果,所以他的代码中没有
\s
)您还建议使用
trim()。很抱歉投了反对票,修正了。