パターンに一致する文字を削除する

Clojure:
パターンに一致する文字を削除する

How to: (方法)

;; 文字列から数字を取り除く例
(defn remove-digits [s]
  (clojure.string/replace s #"\d+" ""))

(remove-digits "Clojure123は楽しい456") ; => "Clojureは楽しい"

;; 特定の文字を取り除く例
(defn remove-specific-chars [s chars-to-remove]
  (clojure.string/replace s (re-pattern (str "[" (java.util.regex.Pattern/quote chars-to-remove) "]")) ""))

(remove-specific-chars "Clojure!は*楽しい&" "!*&") ; => "Clojureは楽しい"

Deep Dive (深掘り)

Clojureは、シンボリックなデータ処理に長ける関数型言語です。文字の削除も関数を使って簡単に行えます。これは、Javaの正規表現エンジンを利用しているためです。clojure.string/replace関数を使い、第一引数に対象文字列、第二引数に正規表現パターン、第三引数に置き換える文字(この場合は空文字列)を指定します。

古くからテキスト処理にはSedやAwkといったツールが使われてきましたが、Clojureでの処理はこれらのツールに比べて柔軟性に富み、組み込みのパターンマッチングを直感的に使えます。さらに、書き換えられた文字列自体が不変のデータとして扱われるため、プログラムの副作用を抑えながら作業できます。

他の言語では異なるアプローチを取ることもありますが、ClojureはJVM上で動作することから、Javaのライブラリを活用可能であり、拡張性も高いです。このように、Clojureを用いると、パターンに合わせたテキスト操作がシンプルで、かつ強力なツールを利用して行えるのです。

See Also (関連情報)