搜索和替换文本

Clojure:
搜索和替换文本

How to: (怎么做:)

Clojure里用clojure.string/replace来搜索替换:

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

;; 替换简单字符串
(str/replace "I love Clojure!" "love" "adore")
;; => "I adore Clojure!"

;; 使用正则表达式替换所有匹配项
(str/replace "E=mc^2 is quite famous in physics." #"[a-z]" "X")
;; => "E=XX^X XX XXXXX XXXXXX XX XXXXXXX."

Deep Dive (深入探究)

搜索替换很早就在文本编辑和处理程序中出现,例如sed和awk。Clojure作为一门现代Lisp,提供了强大的字符串处理库。除了clojure.string/replace,还有其他函数,例如re-seqre-find,它们可以帮助细致地处理文本。正则表达式支持也让搜索更加灵活。

搜索和替换在Clojure中通过Java的正则表达式引擎实现,性能很好。但要注意:替换操作产生新的字符串,原始字符串保持不变,这是因为Clojure中字符串是不可变的。

See Also (另请参阅)

  • Clojure官方文档的字符串处理部分:Clojure Strings
  • Oracle官方关于Java正则表达式的文档:Java Regex
  • 在线正则表达式测试器:Regexr