Используйте правильный инструмент для работы
Я не вижу ничего плохого в том, что вы делаете сейчас.
ICU транслитерация - в первую очередь язык предназначенный. Он пытается сохранить смысл.
Регулярные выражения, с другой стороны, могут манипулировать символами подробно, что дает вам уверенность в том, что имя файла ограничено выбранными символами.
Комбинация совершенна, в данном случае.
Я, конечно же, искал решение вашего вопроса. Но, честно говоря, я не мог найти что-то, что будет работать на всех возможных входах.
Например, не все символы, мы будем рассматривать знаки препинания, удаляются [:Punctuation:] Remove;
. Попробуйте русское название: Корнильев, Кирилл
. После применения вашего id
он будет: Kornilʹev Kirill
. Очевидно, что это не знак препинания, но вы не хотите его в имени файла.
Так что я бы посоветовал использовать правильный инструмент для работы:
- Используйте ICU, чтобы получить лучший ASCII enquivalent. Только используя
Latin-ASCII;
, как это делает id
. Ницца и просто.
- Затем используйте регулярное выражение, как и вы, чтобы убедиться, что у вас остались только те персонажи, которые вам нужны.
В этом нет ничего плохого.
PS: Лично я считаю, что человек или лица, написавшие руководство пользователя ICU, не должны дополняться хорошо выполненной работой. Какой беспорядок.
Всего 50? Этот вопрос раздувает умы, а потом только 50? сделайте это 200 ..... – UltraDEVV
@UltraDEVV Я сомневаюсь, что повышение награды увеличит число программистов, которые знают ответ;) –