Julia Language
String normalisatie
Zoeken…
Syntaxis
- normalize_string (s :: String, ...)
parameters
Parameter | Details |
---|---|
casefold=true | Vouw de string naar een canoniek geval gebaseerd op de Unicode- standaard. |
stripmark=true | Verwijder diakritische tekens (bijv. Accenten) van tekens in de invoertekenreeks. |
Hoofdletterongevoelige tekenreeksvergelijking
Strings kunnen worden vergeleken met de operator ==
in Julia, maar dit is gevoelig voor verschillen in het geval. "Hello"
en "hello"
worden bijvoorbeeld als verschillende tekenreeksen beschouwd.
julia> "Hello" == "Hello"
true
julia> "Hello" == "hello"
false
Als u snaren op een niet-hoofdlettergevoelige manier wilt vergelijken, normaliseert u de snaren door ze eerst met een hoes te vouwen. Bijvoorbeeld,
equals_ignore_case(s, t) =
normalize_string(s, casefold=true) == normalize_string(t, casefold=true)
Deze aanpak verwerkt ook niet-ASCII Unicode correct:
julia> equals_ignore_case("Hello", "hello")
true
julia> equals_ignore_case("Weierstraß", "WEIERSTRASS")
true
Merk op dat in het Duits de hoofdvorm van het ß-teken SS is.
Diacritisch-ongevoelige stringvergelijking
Soms wil men strings als "resume"
en "résumé"
om gelijk te vergelijken. Dat wil zeggen, grafemen die een basische glyph delen, maar mogelijk verschillen vanwege toevoegingen aan die basische glyphs. Een dergelijke vergelijking kan worden bereikt door diakritische tekens te verwijderen.
equals_ignore_mark(s, t) =
normalize_string(s, stripmark=true) == normalize_string(t, stripmark=true)
Hierdoor kan het bovenstaande voorbeeld correct werken. Bovendien werkt het goed, zelfs met niet-ASCII Unicode-tekens.
julia> equals_ignore_mark("resume", "résumé")
true
julia> equals_ignore_mark("αβγ", "ὰβ̂γ̆")
true