ค้นหาความยาวของสตริง

Elixir:
ค้นหาความยาวของสตริง

วิธีการ:

ใน Elixir, คุณสามารถดูความยาวของสตริงได้ด้วยฟังก์ชัน String.length/1 นี่คือวิธีการ:

my_string = "Hello, World!"
length = String.length(my_string)
IO.puts(length)

ตัวอย่างผลลัพธ์:

13

การศึกษาลึก

ภายใน, สตริงของ Elixir ถูกเข้ารหัสด้วย UTF-8 เป็นไบนารี แต่ละตัวอักษรสามารถเป็นจำนวนไบต์ตั้งแต่หนึ่งถึงสี่ไบต์ เมื่อเราเรียก String.length/1, เราไม่ได้นับไบต์เพียงอย่างเดียว; เรานับ Unicode graphemes, ซึ่งเป็นสิ่งที่เรามองเห็นเป็นตัวอักษร

ในอดีต, การดำเนินการความยาวสตริงในหลายภาษามุ่งเน้นไปที่ไบต์และไม่ได้คำนึงถึงตัวอักษรหลายไบต์อย่างเหมาะสม Elixir เริ่มต้นด้วยวิธีการที่ทันสมัยและเป็นมิตรกับ Unicode ตั้งแต่แรก

สำหรับทางเลือกอื่น ๆ, คุณอาจนับ graphemes ด้วยตนเองโดยใช้ recursion หรือด้วย loop แต่นั่นไม่จำเป็นและไม่มีประสิทธิภาพ String.length/1 ได้รับการปรับให้เหมาะสมและเป็นภาษาอย่างเป็นทางการ

การดำเนินการของ Elixir ใช้ Erlang NIF (Native Implemented Function) สำหรับ String.length/1, ทำให้มันเร็วมาก การนับไบต์แทน graphemes ทำได้ด้วย byte_size/1, ซึ่งนับไบต์ที่แท้จริงของการแสดงรูปแบบไบนารีของสตริง—มีประโยชน์ในการดำเนินงานระดับต่ำที่การเข้ารหัสไม่สำคัญ

ดูเพิ่มเติม