我试图在字符串行上使用方法拆分,如下所示:
println("/gg/dsa".split('/').toString)
println("/gg/dsa".split("/").toString)
但这两种方法都会打印出类似这样的奇怪内容:
[Ljava.lang.String; @ 6ac7c6cc
但正如我在示例http://alvinalexander.com/scala/scala-split-string-example中所看到的,这应该打印数组数据。 我在这里错过了什么?
答案 0 :(得分:1)
这是java.lang.Object#toString
的定义:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
java.lang.Array
直接从java.lang.Object
继承,但不会覆盖toString
以返回更合适的内容,从而产生您获得的输出。您可以做的是在Scala中调用.mkString(", ")
来创建结果字符串:
println("/gg/dsa".split("/").mkString(", "))
这将产生如下输出:
, gg, dsa
答案 1 :(得分:1)
你有一些选择:
如前所述:
println("/gg/dsa".split('/').mkString(", "))
将打印:
,gg,dsa
具有相同输出的有效替代方案可以是:
"/gg/dsa".split('/').foreach(print)
另一种选择:
runtime.ScalaRunTime.stringOf("/gg/dsa".split('/'))
输出:
数组("",gg,dsa)
答案 2 :(得分:0)
它的原因是您将其转换为字符串,表示字符串表示。现在,如果你想要对数组进行美化,那就行了:
println("/gg/dsa".split('/').deep.mkString("\n"))