Поиск…


Синтаксис

  • 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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow