Как я могу нормализовать / не акцентировать текст в Java?В настоящее время я использую java.text.Normalizer:
Normalizer.normalize(str, Normalizer.Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "")
Но это далеко не идеально.Например, он оставляет норвежские символы æ и ø нетронутыми.Кто-нибудь знает альтернативу?Я ищу что-то, что конвертировало бы символы на всех языках в диапазон az.Я понимаю, что есть разные способы сделать это (например, должен ли æ быть закодирован как «a», «e» или даже «ae»?), И я открыт для любого решения.Я предпочитаю не писать что-то сам, так как думаю, что вряд ли я смогу сделать это хорошо для всех языков.Производительность НЕ критична.
Вариант использования: я хочу преобразовать введенное пользователем имя в простое имя в диапазоне азот.Преобразованное имя будет отображаться пользователю, поэтому я хочу, чтобы оно максимально совпадало с тем, что написал пользователь на своем языке оригинала.
РЕДАКТИРОВАТЬ:
Хорошолюди, спасибо за пренебрежение постом и не решение моего вопроса, уууу!:) Может быть, я должен был пропустить вариант использования.Но, пожалуйста, позвольте мне уточнить.Мне нужно преобразовать имя, чтобы хранить его внутри. Я не могу контролировать выбор разрешенных здесь букв. Имя будет отображаться пользователю, например, в URL.Точно так же, как ваше имя пользователя на этом форуме нормализуется и отображается вам в URL, если вы нажмете на свое имя.Этот форум преобразует имя типа "Bășan" в "baan", а имя типа "Øyvind" - в "yvind".Я верю, что это можно сделать лучше.Я ищу идеи и, желательно, библиотечную функцию, чтобы сделать это для меня.Я знаю, что не могу понять это правильно, я знаю, что «o» и «ø» различны и т. Д., Но если меня зовут «Øyvind» и я регистрируюсь на онлайн-форуме, я бы предпочел, чтобы мое имя пользователя былоОйвинд ", а не" Увинд ".Надеюсь, что это имеет какой-то смысл!Спасибо!
(И НЕТ, мы не позволим пользователю выбирать свое имя пользователя. Я просто ищу альтернативу java.text.Normalizer. Спасибо!)