而且我不知道为什么!
我基本上有一个STRING(是,不是数组),它具有以下内容:
[something, something else, somoething, trallala, something]
我想将其转换为String []。 因此,首先我从第一个字符和最后一个字符除去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);
您如何获得[Ljava.lang.String;@186d4c1? 做urlArr的S.O.P吗?
输出
[Ljava.lang.String;@186d4c1
是java在默认情况下(转换为字符串时)打印字符串数组(或任何数组)的方式。 您可以使用
Arrays.toString(urlArr)
以获得更具可读性的版本。
好的,但是我将如何遍历所有项目? 像一个foreach循环? 我如何获取实际值而不是该代码? 谢谢!
我认为这是比将其转换为列表以使用Lists toString()更好的解决方案,就像Peter建议的那样。 尽管不重要,但因为可能仅用于调试。
您所说的"价值"是什么意思? 您将获得一个可以循环遍历的字符串数组(例如,如for循环所建议的那样:for (String s : urlArr) { System.out.println(s); })。
不,它不仅用于调试。 字符串im解析来自配置文件,我需要将值拆分为一个新数组以加载到程序中。
但是我不能遍历一个字符串吗? 如果我使用Arrays.toString(),它将返回一个字符串,而我无法遍历字符串? 看看我要去哪里? 我可能没对你说对:/
如果您有兴趣,请在这里查看输出说明。
您将得到一个有效的String数组,但是尝试直接打印它并不会达到您期望的效果。 尝试例如
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);
}
在数组上执行toString时,仅获得内部表示。 没有那么有用。 尝试Arrays.toString(what comes back from split)以获得更易读的内容。