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
, ซึ่งนับไบต์ที่แท้จริงของการแสดงรูปแบบไบนารีของสตริง—มีประโยชน์ในการดำเนินงานระดับต่ำที่การเข้ารหัสไม่สำคัญ