📝Clojure String

📝Clojure String

Clojureの文字の扱いについてまとめる.

up: 📂Clojure Core Languages

clojure.core #

文字列の長さ: count #

(count "foo bar zzz")
; => 11

文字数制限: subs #

subs が良さそう. そのものズバリな関数は見つからなかった.

(subs "ClojureScript" 0 4)
;; => "Cloj"

ただし制限したい文字数未満だとエラーするので工夫は必要.

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

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

文字列を含むか?: includes? #

(includes? s substr)

clojure.string #

(require '[clojure.string :as str])

文字列をスペースで分割する: split #

(str/split "foo bar zzz" #" ")
; ["foo" "bar" "zzz"]

なお第2引数の # はリーダマクロでありClojureにおける正規表現である java.util.regex.Patternのインスタンスを示す.

文字列を置換する: replace #

(str/replace "The color is red" #"red" "blue")

文字列リストを結合する: #

clojure.core/str をつかうのがFirst Choice.

(str "hoge" "huga")
;; => "hogehuga"

clojure.string/join を使えるとbetter.

user=> (clojure.string/join ", " [1 2 3])
;; => "1, 2, 3"

Clojureでの正規表現 #

java.util.regex.Pattern #

Clojureの正規表現のマッチャーはこのインスタンスを駆使する. つまりよくわからなくてとりあえずコピペで先に進みたいときは, 「Java 正規表現」とかでググればおけ.

re-pattern で生成(Pattern.compile相当). またはリーダマクロ # をつかう.

文字列抽出: re-find #

re-findは正規表現に一致した文字列を返す. vectorを返し, はじめのものは完全一致, 残りは部分一致の文字列を返す.

Clojure正規表現逆引きHowto #


Tags