在Java中用正则表达式拆分,导致一个空元素

时间:2019-04-21 08:59:40

标签: java

我试图拆分String数组并使用定界符删除所有空格(包括\t),但是由于某种原因,我得到了一个空元素""

我的代码:

String temp = "    x = x + 9";
String[] tempArr = temp.split("\\s+");

我得到的结果:

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

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

2 个答案:

答案 0 :(得分:1)

split("\s+")更改为split("\\s+"),并更早使用trim()来消除所有前导和尾随的多余空格

String[] tempArr = temp.trim().split("\\s+");

答案 1 :(得分:0)

您使用的"\\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"

您知道为什么吗?因为在第一个","前面是空字符串。空格也是一样。

如果您不希望第一个元素为空,请使用功能.trim(),因为已经建议使用@PRC_noob和@Pshemo。它将删除字符串开头和结尾的空格。