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