2013-12-23 24 views
12

如果字符串太長,必須將其截斷爲200個字符。在Clojure中截斷字符串的簡單方法

檢查cheatsheet,(subs "Lorem Ipsum" 0 200)似乎是一個明顯的選擇,但如果第二個運算符大於字符串的長度,則會引發異常。

是否有一個簡單的內置函數用於截斷Clojure中的字符串?如果我必須自己定義,最簡單的方法是什麼?

+0

我會檢查,看看如果字符串的長度是大於200.如果它是然後子字符串200個字符,否則根本不子字符串。 –

回答

19

您可以事先檢查長度或使用min來確定字符的實際數量將保持不變:

(defn trunc 
    [s n] 
    (subs s 0 (min (count s) n))) 
+2

這很好,特別是因爲字符串是jvm中的一個計數類型,所以count是O(1)操作。 – noisesmith

5

你可以把它們作爲序列,並得到安全(?和優雅),但代價是性能:

(defn truncate 
    [s n] 
    (apply str (take n s)))