Julia Language
Strängnormalisering
Sök…
Syntax
- normalisera sträng (s :: String, ...)
parametrar
Parameter | detaljer |
---|---|
casefold=true | Vik strängen till ett kanoniskt fall baserat på Unicode- standarden. |
stripmark=true | Rada diakritiska märken (dvs. accenter) från tecken i inmatningssträngen. |
Fall-okänslig strängjämförelse
Strängar kan jämföras med ==
operatören i Julia, men detta är känsligt för skillnader i fall och fall. Till exempel betraktas "Hello"
och "hello"
som olika strängar.
julia> "Hello" == "Hello"
true
julia> "Hello" == "hello"
false
För att jämföra strängar på ett okänsligt sätt, normaliserar du strängarna genom att fälla dem i huvudsak. Till exempel,
equals_ignore_case(s, t) =
normalize_string(s, casefold=true) == normalize_string(t, casefold=true)
Detta tillvägagångssätt hanterar även icke-ASCII Unicode korrekt:
julia> equals_ignore_case("Hello", "hello")
true
julia> equals_ignore_case("Weierstraß", "WEIERSTRASS")
true
Observera att på tyska är storleken på ß-karaktären SS.
Diakritisk-okänslig strängjämförelse
Ibland vill man att strängar som "resume"
och "résumé"
ska jämföra. Det vill säga grafema som delar en grundläggande glyph, men som eventuellt skiljer sig på grund av tillägg till de grundläggande glyferna. En sådan jämförelse kan uppnås genom att strippa diakritiska märken.
equals_ignore_mark(s, t) =
normalize_string(s, stripmark=true) == normalize_string(t, stripmark=true)
Detta gör att exemplet ovan fungerar korrekt. Dessutom fungerar det bra även med icke-ASCII Unicode-tecken.
julia> equals_ignore_mark("resume", "résumé")
true
julia> equals_ignore_mark("αβγ", "ὰβ̂γ̆")
true