Tìm kiếm và thay thế văn bản

Clojure:
Tìm kiếm và thay thế văn bản

Làm thế nào:

Trong Clojure, chúng ta sử dụng hàm clojure.string/replace để tìm kiếm và thay thế văn bản. Chúng ta hãy đi thẳng vào một số mã:

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

;; Thay thế cơ bản
(str/replace "I like apples" "apples" "oranges")
;; => "I like oranges"

;; Sử dụng biểu thức chính quy để thay thế tất cả nguyên âm
(str/replace "Hello, World!" "[AEIOUaeiou]" "*")
;; => "H*ll*, W*rld!"

;; Thay thế với một hàm cho những thay đổi động
(str/replace "I have 2 apples and 5 bananas"
             #"\d+"
             (fn [match] (str (inc (Integer/parseInt match)))))
;; => "I have 3 apples and 6 bananas"

Đơn giản như vậy. Chạy nó, và bạn sẽ thấy sự biến đổi ngay tại REPL của bạn.

Đào Sâu

Việc tìm kiếm và thay thế trong văn bản không phải là mới. Nó cổ xưa trong ngành công nghiệp máy tính. Chúng ta đã nhận được nó từ những trình biên tập đầu tiên như sed trong Unix. Chúng ta đã đi được một chặng đường dài kể từ đó.

Clojure, được xây dựng trên JVM, có nghĩa là bạn có sức mạnh của biểu thức chính quy Java ngay bên dưới. Về mặt hiệu suất, nó khá tiện lợi cho các script nhanh nhưng nhớ rằng, lạm dụng trong xử lý văn bản quy mô lớn có thể ảnh hưởng đến hiệu suất.

Về các lựa chọn khác, ngoài clojure.string/replace, có các thư viện dựa trên regex hay thậm chí là viết hàm tùy chỉnh của riêng bạn nếu bạn cảm thấy mạo hiểm. Hãy nghĩ về việc sử dụng replace-first nếu bạn chỉ cần một sự thay đổi đơn lầm.

Về mặt chức năng, cách tiếp cận về bất biến của Clojure có nghĩa là mỗi lần thay thế sẽ tạo ra một chuỗi mới. Không có chuỗi có thể thay đổi có nghĩa là ít lỗi và bất ngờ hơn.

Xem Thêm

Để tìm hiểu sâu hơn, hãy xem các nguồn lực này: