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

而且我不知道为什么!

我基本上有一个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)以获得更易读的内容。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值