Java:split()返回[Ljava.lang.String;@186d4c1],为什么?

Java:split()返回[Ljava.lang.String;@186d4c1],为什么?,java,split,Java,Split,我不知道为什么 我基本上有一个字符串(是的,不是数组),它包含以下内容: [something, something else, somoething, trallala, something] 我想把它变成一个字符串[]。因此,首先,我将第一个和最后一个字符的子字符串()去掉括号[]。然后我使用split()函数按逗号分割。我试着同时使用“\\;”和“\,”得到同样的结果 这就是我得到的: [Ljava.lang.String;@186d4c1 这是它的代码。我把它做成了一行: Strin

我不知道为什么

我基本上有一个字符串(是的,不是数组),它包含以下内容:

[something, something else, somoething, trallala, something]
我想把它变成一个字符串[]。因此,首先,我将第一个和最后一个字符的子字符串()去掉括号[]。然后我使用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);
输出

[Ljava.lang.String;@186d4c1
默认情况下(转换为字符串时),java打印字符串数组(或任何数组)的方式。你可以用

Arrays.toString(urlArr)

要获得更可读的版本。

在数组上执行
toString
操作时,只需获得内部表示。没那么有用。尝试
Arrays.toString(从拆分中返回的内容)
以获得更可读的内容。

您将获得一个有效的
字符串数组,但尝试直接打印它并不能达到预期效果。试试看

System.out.println(Arrays.asList(urlArr));
更新 如果您想要逐个处理解析的令牌,您可以简单地遍历数组,例如

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

如何获取
[Ljava.lang.String;@186d4c1
?对
urlArr
进行S.O.P操作?好的,但是我如何循环所有项目?比如foreach循环?如何获取实际值而不是代码?谢谢!我认为这是一个比将其转换为列表以使用列表的toString()更好的解决方案,就像Peter建议的那样。但这不太重要,因为它可能只用于调试。你说的“值”是什么意思?你得到了一个可以循环的字符串数组(例如,正如你建议的for循环:
for(String s:urlArr){System.out.println(s);}
).No,它不仅仅用于调试。我正在解析的字符串来自配置文件,我需要将值拆分为一个新数组以加载到程序中。但是我不能循环字符串,对吗?如果我使用Arrays.toString(),它将返回一个字符串,而我不能循环字符串?看到我要去哪里了吗?我可能没有理解正确:/