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

qwe*_*rty 3 java split

我不明白为什么!

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

[something, something else, somoething, trallala, something]
Run Code Online (Sandbox Code Playgroud)

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

这就是我得到的:

[Ljava.lang.String;@186d4c1
Run Code Online (Sandbox Code Playgroud)

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

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

正如你所看到的那样,第一部分是(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);
Run Code Online (Sandbox Code Playgroud)

How*_*ard 7

输出

[Ljava.lang.String;@186d4c1
Run Code Online (Sandbox Code Playgroud)

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

Arrays.toString(urlArr)
Run Code Online (Sandbox Code Playgroud)

获得更易读的版本.


Pét*_*rök 5

你正在获得一个有效的Strings 数组,但是试图直接打印它并不能达到预期的效果.试试例如

System.out.println(Arrays.asList(urlArr));
Run Code Online (Sandbox Code Playgroud)

更新

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

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