การค้นหาและแทนที่ข้อความ

Clojure:
การค้นหาและแทนที่ข้อความ

วิธีการ:

ใน Clojure, เราใช้ฟังก์ชัน clojure.string/replace เพื่อค้นหาและแทนที่ข้อความ เรามาดูโค้ดกันเลย:

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

;; การแทนที่พื้นฐาน
(str/replace "I like apples" "apples" "oranges")
;; => "I like oranges"

;; การใช้ regular expression เพื่อแทนที่สระทั้งหมด
(str/replace "Hello, World!" "[AEIOUaeiou]" "*")
;; => "H*ll*, W*rld!"

;; การแทนที่ด้วยฟังก์ชันสำหรับการเปลี่ยนแปลงแบบไดนามิก
(str/replace "I have 2 apples and 5 bananas"
             #"\d+"
             (fn [match] (str (inc (Integer/parseInt match)))))
;; => "I have 3 apples and 6 bananas"

ง่ายเหมือนนั้นแหละ รันมัน แล้วคุณจะเห็นการเปลี่ยนแปลงเหล่านั้นใน REPL ของคุณเลย

การศึกษาลึก

การค้นหาและแทนที่ในข้อความไม่ใช่เรื่องใหม่ มันเก่าแก่ในการคอมพิวเตอร์ คุณได้รับมันมาจากตัวแก้ไขเบื้องต้นเช่น sed ใน Unix เราได้พัฒนามาไกลแล้วตั้งแต่นั้น

Clojure, ที่อยู่บน JVM, หมายความว่าคุณมีพลังการจับคู่สายอักขระแบบ Java ให้ใช้งาน ด้านประสิทธิภาพ, มันดีสำหรับสคริปต์เล็กๆ แต่จำไว้, การใช้มากเกินไปในการประมวลผลข้อความขนาดใหญ่อาจทำให้ประสิทธิภาพลดลง

สำหรับทางเลือกอื่น, นอกจาก clojure.string/replace, ยังมีห้องสมุดตาม regular expression หรือแม้กระทั่งเขียนฟังก์ชันกำหนดเองของคุณเองหากคุณรู้สึกชอบผจญภัย พิจารณา replace-first หากคุณต้องการการเปลี่ยนแปลงที่เกิดขึ้นครั้งเดียว

ในด้านการใช้งาน, วิธีการของ Clojure ที่เน้นความไม่สามารถเปลี่ยนแปลงได้หมายถึงการแทนที่แต่ละครั้งจะส่งผลให้เกิดสายอักขระใหม่ ไม่มีสายอักขระที่เปลี่ยนแปลงได้หมายถึงความบกพร่องและความประหลาดใจน้อยลง

ดูเพิ่มเติม

เพื่อการศึกษาลึกขึ้น, ลองดูทรัพยากรเหล่านี้:

  • คู่มือ clojure.string ของ Clojure API documentation
  • เกี่ยวกับ regular expressions, จาก Pattern class ของ Java