Комплекс Golang fold grüßen

Я пытаюсь получить фальцовку, чтобы быть согласованной между тремя языками (С++, Python и Golang), потому что мне нужно проверить, соответствует ли строка той, которая сохранена, независимо от языка.

Примером проблематичного слова является немецкое слово "grüßen", которое в верхнем регистре "GRÜSSEN" (обратите внимание, что "ß" становится двумя символами как "SS" ).

Есть ли способ сделать это, что мне не хватает, или эта ошибка в конце unicode documentation применима ко всем обычаям преобразование текста в golang? Если да, то каковы мои варианты складывания фраз, кроме написания в cgo?

Ответ 1

Расширенная (с поддержкой Unicode) текстовая обработка не является частью Go stdlib, ¹ и существует в виде множества ( "благословленных" ) сторонних пакетов под golang.org/x/text/ зонтик.

Как выяснил Шон сам, можно сделать

import (
  "golang.org/x/text/cases"
)

c := cases.Fold()
c.String("grüßen")

чтобы вернуть "grüssen".


¹ Это потому, что все, что отправлено в stdlib, подчиняется Go 1 совместимость, и в то время, когда Go 1 был отправлен, определенная функциональность недоступна или был неполным, или его API были в потоке и т.д., поэтому такие биты не поддерживались из ядра, чтобы позволить им созреть.