Elixir:
Sökning och ersättning av text
How to:
Söka och ersätta i Elixir kan göras enkelt med String
modulen. Här är några exempel:
# Ersätter första förekomsten av "hej" med "hallå"
original_text = "hej världen, hej igen!"
new_text = String.replace(original_text, "hej", "hallå", global: false)
IO.puts(new_text)
# Output: "hallå världen, hej igen!"
# Ersätter alla förekomster av "hej" med "hallå"
new_text_global = String.replace(original_text, "hej", "hallå")
IO.puts(new_text_global)
# Output: "hallå världen, hallå igen!"
# Använder en regex för att ersätta alla siffror med "#"
text_with_numbers = "Här är 2 siffror: 1 och 3."
replaced_numbers = String.replace(text_with_numbers, ~r/\d/, "#")
IO.puts(replaced_numbers)
# Output: "Här är # siffror: # och #."
Deep Dive
Att söka och ersätta text är grundläggande inom datavetenskap och har sina rötter i tidig datateknik. Elixirs funktioner för sökning och ersättning är influerade av äldre språk som Perl men erbjuder en mer funktionsrik och lättanpassad syntax.
Som alternativ till String.replace
, kan man använda Regex
modulen för mer avancerade mönster. Elixir hanterar regex-strängarna genom Erlangs :re
modul, vilket ger ett djupt lager av mönsterpassning.
Implementeringsdetaljer att ha i åtanke inkluderar att Elixir-strängar är UTF-8 kodade binärer. Det innebär att sökning och ersättning fungerar på unicode-text utan extra arbete men kräver försiktighet med teckenkodningar och -längder.
See Also
- Elixirs officiella dokumentation om
String
modulen: https://hexdocs.pm/elixir/String.html - Regex i Elixir: https://hexdocs.pm/elixir/Regex.html
- Erlangs
:re
modul, som används av Elixir för regex behandling: http://erlang.org/doc/man/re.html