Julia Language
Нормализация строки
Поиск…
Синтаксис
- normalize_string (s :: String, ...)
параметры
параметр | подробности |
---|---|
casefold=true | Сложите строку в канонический регистр, основанный на стандарте Unicode . |
stripmark=true | Разделите диакритические метки (например, акценты) от символов входной строки. |
Сравнение строк без учета регистра
Строки можно сравнить с оператором ==
в Julia, но это чувствительно к различиям в случае. Например, "Hello"
и "hello"
считаются разными строками.
julia> "Hello" == "Hello"
true
julia> "Hello" == "hello"
false
Чтобы сравнить строки в нечувствительном к регистру образом, сначала нормализовать строки, складывая их. Например,
equals_ignore_case(s, t) =
normalize_string(s, casefold=true) == normalize_string(t, casefold=true)
Этот подход также корректно обрабатывает Unicode Unicode:
julia> equals_ignore_case("Hello", "hello")
true
julia> equals_ignore_case("Weierstraß", "WEIERSTRASS")
true
Обратите внимание, что на немецком языке прописная форма ß-символа - SS.
Сравнение диакритико-нечувствительных строк
Иногда вам нужны строки, такие как "resume"
и "résumé"
для сравнения равных. То есть, графемы, которые имеют общий глиф, но, возможно, отличаются из-за добавления к этим основным глифам. Такое сравнение может быть выполнено путем снятия диакритических знаков.
equals_ignore_mark(s, t) =
normalize_string(s, stripmark=true) == normalize_string(t, stripmark=true)
Это позволяет приведенному выше примеру работать правильно. Кроме того, он хорошо работает даже с символами Unicode, отличными от ASCII.
julia> equals_ignore_mark("resume", "résumé")
true
julia> equals_ignore_mark("αβγ", "ὰβ̂γ̆")
true