Lua:
ค้นหาความยาวของสตริง
วิธีทำ:
ใน Lua, คุณสามารถดึงความยาวของสตริงด้วยตัวดำเนินการ #
ง่ายและรวดเร็ว
local myString = "Hello, Lua!"
print(#myString) -- ผลลัพธ์: 11
ถ้าสตริงของคุณมีตัวอักขระขึ้นบรรทัดใหม่หรือเป็นสตริงว่างล่ะ?
local stringWithNewline = "Hello\nLua!"
local emptyString = ""
print(#stringWithNewline) -- ผลลัพธ์: 10
print(#emptyString) -- ผลลัพธ์: 0
แม้ว่าจะมีตัวอักขระขึ้นบรรทัดใหม่, Lua นับทุกตัวอักขระ และใช่, สตริงที่ว่างมีความยาวเป็น 0
ลงลึก
ในอดีต, สตริงในบางภาษานั้นยากกว่านี้ คุณอาจจะต้องใช้ฟังก์ชันหรือเมทอดเพื่อหาความยาวของสตริง วันนี้, ใน Lua, มันง่ายดายมากแค่ใช้ตัวดำเนินการ #
ทางเลือก? หากคุณกำลังจัดการกับอักขระ Unicode, ตัวดำเนินการ #
อาจทำคุณเหนื่อยกับอักขระหลายไบต์ ในกรณีนั้น, คุณอาจจะสำรวจไลบรารีเช่น utf8
Lua เวอร์ชัน 5.3 เป็นต้นไปได้นำเสนอไลบรารีนี้เป็นส่วนหนึ่งของตัวเอง
local unicodeString = "こんにちは" -- นั่นคือ "Hello" ในภาษาญี่ปุ่น
print(#unicodeString) -- ผลลัพธ์อาจทำให้คุณแปลกใจถ้าคุณไม่พร้อมสำหรับอักขระหลายไบต์!
print(utf8.len(unicodeString)) -- ผลลัพธ์: 5 ตัวอักขระตามที่คาดหวัง
รายละเอียดที่ควรทราบ: Lua ทำให้สตริงเป็น immutable และนำกลับมาใช้ภายในผ่านกลไกที่เรียกว่าการใช้สตริงโดยซ้ำ นี่เป็นเรื่องดีเพราะช่วยประหยัดหน่วยความจำและทำให้การดำเนินการความยาวสตริงเร็วขึ้น
ดูเพิ่มเติมได้ที่
- Lua 5.4 Reference Manual: การจัดการสตริง – https://www.lua.org/manual/5.4/manual.html#6.4
- ฟังก์ชัน
utf8.len
– ดำดิ่งสู่การจัดการสตริง Unicode อย่างเหมาะสม – https://www.lua.org/manual/5.4/manual.html#pdf-utf8.len - ประวัติศาสตร์บางอย่างของ Lua และข้อมูลเกี่ยวกับการใช้สตริงโดยซ้ำ – https://www.lua.org/doc/hopl.pdf