De lengte van een string vinden

Elixir:
De lengte van een string vinden

Hoe:

In Elixir krijg je de lengte van een string met de String.length/1 functie. Zo werkt het:

my_string = "Hallo, Wereld!"
length = String.length(my_string)
IO.puts(length)

Voorbeelduitvoer:

13

Diepgaand

Intern zijn Elixir strings UTF-8 gecodeerde binaries. Elk karakter kan een tot vier bytes zijn. Dus, wanneer we String.length/1 aanroepen, tellen we niet zomaar bytes; we tellen Unicode grafemen, wat we waarnemen als karakters.

Historisch gezien waren stringlengtebewerkingen in veel talen byte-gecentreerd en hielden ze niet goed rekening met multi-byte karakters. Elixir’s benadering is modern en vanaf het begin Unicode-vriendelijk.

Wat betreft alternatieven, je zou handmatig grafemen kunnen tellen met behulp van recursie of met een lus, maar dat is onnodig en inefficiënt. String.length/1 is geoptimaliseerd en idiomatisch.

Elixir’s implementatie gebruikt een Erlang NIF (Native Implemented Function) voor String.length/1, waardoor het bliksemsnel is. Bytes tellen in plaats van grafemen wordt gedaan met byte_size/1, wat de ruwe bytes van de binaire representatie van een string telt - nuttig in low-level operaties waar codering niet uitmaakt.

Zie Ook