2013-12-23 2 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))) 
Смежные вопросы