在Clojure中截断字符串的简单方法

Bra*_*och 15 clojure

我有一个字符串,如果太长,必须截断200个字符.

检查的cheatsheet,(subs "Lorem Ipsum" 0 200)似乎是一个显而易见的选择,但如果第二个操作比字符串的长度时,它抛出一个异常.

是否有一个简单的内置函数来截断Clojure中的字符串?如果我必须自己定义,最简单的方法是什么?

xsc*_*xsc 21

您可以预先检查长度或用于min确定将保留的实际字符数:

(defn trunc
  [s n]
  (subs s 0 (min (count s) n)))
Run Code Online (Sandbox Code Playgroud)

  • 这很好,特别是因为字符串是jvm中的计数类型,所以count是O(1)操作. (2认同)

pon*_*zao 6

您可以将它们视为序列并获得安全(和优雅?)但成本是性能:

(defn truncate
  [s n]
  (apply str (take n s)))
Run Code Online (Sandbox Code Playgroud)