Простой способ обрезать строку в Clojure

У меня есть строка, которая должна быть усечена с 200 символами, если она слишком длинная.

Проверка cheatsheet, (subs "Lorem Ipsum" 0 200) представляется очевидным выбором, но она выдает исключение, если второй оператор больше, чем длина строка.

Есть ли простая встроенная функция для обрезания строки в Clojure? Какой самый простой способ сделать это, если я должен определить свой собственный?

Ответ 1

Вы можете проверить длину заранее или использовать min для определения фактического количества оставшихся символов:

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

Ответ 2

Вы можете рассматривать их как последовательности и получать безопасность (и элегантность?), но стоимость - это производительность:

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