Java:split()返回,为什么?

我不明白为什么!

我基本上有一个STRING(是的,不是数组),它具有以下内容:

[something, something else, somoething, trallala, something] 

我想把它变成一个String []。 所以首先关闭i substring()关闭第一个和最后一个字符以摆脱括号[]。 然后我使用split()函数用逗号分割。 我试过用“\ |” 和“,”和“\”,结果相同。

这就是我得到的:

 [Ljava.lang.String;@186d4c1 

这是它的代码。 我把它变成了一个单行:

 String[] urlArr = ((matcher.group(3).toString()).substring(1, (matcher.group(3).length()-1))).split(","); 

正如您所看到的,第一部分是(matcher.group(3).toString()),并且它返回一个有效的字符串(就像我上面发布的示例)。 所以我不明白为什么它不起作用。

有任何想法吗?

编辑:

我澄清了一下代码:

 String arrString = matcher.group(3).toString(); int length = arrString.length(); String[] urlArr = (arrString.substring(1, length-1)).split(","); System.out.println(urlArr); 

您正在获取一个有效的String数组,但尝试直接打印它并不能达到您的预期。 试试例如

 System.out.println(Arrays.asList(urlArr)); 

更新

如果你想逐个处理解析的标记,你可以简单地遍历数组,例如

 for (String url : urlArr) { // Do something with the URL, eg print it separately System.out.println("Found URL " + url); } 

输出

 [Ljava.lang.String;@186d4c1 

是java默认打印字符串数组(或任何数组)的方式(转换为字符串时)。 你可以用

 Arrays.toString(urlArr) 

获得更易读的版本。

当您对数组执行toString时,您只需获取内部表示。 没那么有用。 尝试使用Arrays.toString(what comes back from split)来获得更具可读性的内容。