使用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()。很抱歉投了反对票,修正了。