逆引きclojure文字列の部分(途中)

合っているのか自信がないのでblogに貼るだけにしておく

今のところ

文字のリスト(sequence)から文字列を作成する上手い方法が見つかっていない。
暫定的な対応策は以下

(defn cs-to-str [cs]
  (String. #^"[C" (into-array Character/TYPE cs)))

文字列を結合する

(str "foo" "bar") ; => "foobar"

大文字・小文字に揃える

(. "Hi, Clojurian" toUpperCase) ; => "HI, CLOJURIAN"
(. "Hi, Clojurian" toLowerCase) ; => "hi, clojurian"

大文字と小文字を入れ替える

(defn swap-case [str]
  (cs-to-str
   (map #(cond (Character/isUpperCase %) (Character/toLowerCase %)
	       :else (Character/toUpperCase %))
	str)))

(swap-case "Hi, Clojurian") ; => "hI, cLOJURIAN"

複数行の文字列を作成する

"abc\ndef\nghi"

部分文字列を取り出す

(subs "0123456" 2 5) ; => "234"

文字列を一文字づつ処理する

(doseq [c "abc"] (pr c))

文字列を一行づつ処理する

(use '[clojure.contrib.duck-streams :only (read-lines)])

(doseq [line (read-lines (java.io.StringReader. "abc\ndef\nghi"))]
  (println line))

文字列の先頭・末尾の空白を削除する

(cs-to-str (drop-while #(= \space %)  "  abc"))
(cs-to-str (reverse (drop-while #(= \space %) (reverse "abc   "))))

文字列を数値に変換する

(Integer/parseInt "0123") ; => 123

文字とUnicodeスカラー値を相互変換する

(char (int \a)) ; => \a

文字列を URI エンコードする

(java.net.URLEncoder/encode "逆引き Clojure") ; => ; => "%E9%80%86%E5%BC%95%E3%81%8D+Clojure"
(java.net.URLDecoder/decode  "%E9%80%86%E5%BC%95%E3%81%8D+Clojure") ; => "逆引き Clojure"

文字列を Base64 エンコードする

文字列のエンコーディングを変換する

文字列を分割する