为什么无法访问String值?

我希望s1是“ a”,而不是它的Ljava.lang.String; @ d70d7a吗?

 val it = Iterator("(a,((a,b),1.0))")             //> it  : Iterator[String] = non-empty iterator

 val s1 = it.next.replace("(" , "").replace(")" , "").split(",").toString.split(",")
                                                  //> s1  : Array[String] = Array([Ljava.lang.String;@d70d7a)
 println("s1 is "+s1(0))                          //> s1 is [Ljava.lang.String;@d70d7a

最佳答案

让我们逐个命令:

val it = Iterator("(a,((a,b),1.0))")
// here we got iterator on one String

val s1 = it.next // "(a,((a,b),1.0))"
        .replace("(" , "") // "a,a,b),1.0))"
        .replace(")" , "") // "a,a,b,1.0"
        .split(",") // multiple lines in array: "a", "a","b","1.0"
        .toString // Array[String].toString returns what you got: Ljava.lang.String;@d70d7a
        .split(",") // one String (because there's no "," signs)


也许您应该在toList之前运行toString,因为toString的定义方式与您期望在List的此实现中定义的方式相同:

val s1 = ...
        .split(",")
        .toList
        .toString
        ...


也许您应该查看Java: split() returns [Ljava.lang.String;@186d4c1], why?进行澄清。

关于string - 无法访问字符串值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24956683/

10-09 17:22