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 (関連情報)
- Clojureの公式サイト: https://clojure.org/
- Clojureの
clojure.string/replace
関数のドキュメント: https://clojuredocs.org/clojure.string/replace - Javaの正規表現について: https://docs.oracle.com/javase/tutorial/essential/regex/