Clojure:
การดึงข้อมูลย่อยออกมา
วิธีการ:
Clojure ทำให้การทำงานกับข้อความเป็นเรื่องง่าย สำหรับการดึงข้อความย่อย, subs
คือฟังก์ชั่นตัวเลือกของคุณ:
(let [text "ClojureRocks"]
(subs text 7)) ; => "Rocks"
(let [text "ClojureRocks"]
(subs text 0 7)) ; => "Clojure"
และนั่นคือทั้งหมด—ให้มันเริ่มต้นด้วยดัชนีเริ่มต้น, และตัวเลือกเป็นดัชนีสุดท้าย, และคุณจะตัดข้อความได้ตามที่คุณต้องการ
ลึกลงไปดู
การดึงข้อความย่อยออกมาไม่ใช่เรื่องใหม่—มีมาตั้งแต่ยุคแรกๆ ของการเขียนโปรแกรม ใน Clojure, subs
เป็นฟังก์ชั่นที่ตรงไปตรงมา มันเป็นส่วนหนึ่งของความสามารถในการทำงานร่วมกับ Java โดยสามารถใช้งานเมธอด substring
ของ Java ได้ สองประเด็นหลัก: ไม่อนุญาตให้ใช้ดัชนีติดลบ, และนับแบบฐานศูนย์ (เริ่มนับที่ศูนย์) ดังนั้นจำเรื่องนี้ไว้ไม่เช่นนั้นคุณจะนับผิด
ทางเลือกอื่น? แน่นอน. Regex ด้วย re-find
และ re-matcher
สำหรับลวดลายที่ซับซ้อน, หรือ split
ถ้าคุณกำลังแบ่งที่ตัวคั่น แต่ละเครื่องมือมีที่ของมัน, แต่ไม่มีอะไรเทียบ subs
ได้ในความเรียบง่าย
ในแง่ของการรูปแบบ, subs
ไม่ได้คัดลอกอักขระ, แต่แบ่งปันอาร์เรย์อักขระของข้อความดั้งเดิม เป็นวิธีที่มีประสิทธิภาพ, แต่ถ้าข้อความดั้งเดิมของคุณใหญ่มากและคุณต้องการเพียงส่วนเล็กๆ, คุณอาจโดยไม่ตั้งใจเก็บข้อความใหญ่ทั้งหมดไว้ในหน่วยความจำ
ดูเพิ่มเติม:
- Official Clojure String API: clojure.string
- Java
substring
: เพราะนั่นคือแหล่งพลังหลักของsubs
Java substring - Regular expressions ใน Clojure: re-find
- การแบ่งข้อความใน Clojure: split