Julia Language
Normalizacja ciągów
Szukaj…
Składnia
- normalize_string (s :: String, ...)
Parametry
Parametr | Detale |
---|---|
casefold=true | Złóż ciąg znaków do kanonicznej litery opartej na standardzie Unicode . |
stripmark=true | Usuń znaki diakrytyczne (tj. Akcenty) ze znaków w ciągu wejściowym. |
Porównanie ciągów bez rozróżniania wielkości liter
Ciągi można porównać z operatorem ==
w Julii, ale jest to wrażliwe na różnice w wielkości liter. Na przykład "Hello"
i "hello"
są uważane za różne ciągi.
julia> "Hello" == "Hello"
true
julia> "Hello" == "hello"
false
Aby porównać ciągi znaków bez rozróżniania wielkości liter, normalizuj je, najpierw je składając. Na przykład,
equals_ignore_case(s, t) =
normalize_string(s, casefold=true) == normalize_string(t, casefold=true)
To podejście obsługuje także poprawnie kodowanie inne niż ASCII:
julia> equals_ignore_case("Hello", "hello")
true
julia> equals_ignore_case("Weierstraß", "WEIERSTRASS")
true
Zauważ, że w języku niemieckim wielką literą znaku ß jest SS.
Porównanie ciągów znaków diakrytyczno-niewrażliwych
Czasami chce się, aby ciągi takie jak "resume"
i "résumé"
porównywały się równo. Oznacza to, że grafemy, które mają wspólny glif, ale prawdopodobnie różnią się z powodu dodatków do tych podstawowych glifów. Takie porównanie można osiągnąć, usuwając znaki diakrytyczne.
equals_ignore_mark(s, t) =
normalize_string(s, stripmark=true) == normalize_string(t, stripmark=true)
Dzięki temu powyższy przykład działa poprawnie. Dodatkowo działa dobrze nawet ze znakami Unicode spoza ASCII.
julia> equals_ignore_mark("resume", "résumé")
true
julia> equals_ignore_mark("αβγ", "ὰβ̂γ̆")
true