我是新手。我想拆分String
然后打印。如果我这样做:
(.split "Dasher Dancer Prancer" " ")
它给出的#<String[] [Ljava.lang.String;@64e0e8ca>
只是数组的toString()
。
然后如果我这样做:
(.length (.split "Dasher Dancer Prancer" " "))
它提供了java.lang.IllegalArgumentException: No matching field found: length for class [Ljava.lang.String;
答案 0 :(得分:5)
改为使用clojure.string/split
:
user=> (clojure.string/split "Dasher Dancer Prancer" #" ")
["Dasher" "Dancer" "Prancer"]
不需要使用java interop。
如果您需要长度,请使用count:
user=> (count (clojure.string/split "Dasher Dancer Prancer" #" "))
3
你要调用的.split
是String
上的一个简单的java方法调用,它返回一个数组,然后通过调用{{String
将其转换为toString
。 1}}就可以了。正如您所注意到的那样,它并没有给您带来理想的结果。
clojure.string/split
返回clojure.lang.PersistentVector
,其中.toString
方法按预期打印内容。
答案 1 :(得分:4)
你可以使用(alength)功能:
(alength (.split "Dasher Dancer Prancer" " "))
用户=&GT; (doc alength)
clojure.core / alength ([数组])
返回Java数组的长度。适用于所有阵列 类型。
(doc)和(find-doc)对于每日Clojure开发非常重要。