Я пишу код для удаления всех диакритических знаков для одной строки.
Например: áÁéÉíÍóÓúÚäÄëËïÏöÖüÜñÑ
Я использую свойство InCombiningDiacriticalMarks
Unicode. Но я хочу игнорировать замену ñ
и Ñ
.
Теперь я сохраняю эти два символа, прежде чем заменить на:
s = s.replace('ñ', '\001');
s = s.replace('Ñ', '\002');
Это можно использовать InCombiningDiacriticalMarks
игнорируя диакритические знаки c из ñ
и Ñ
.
Это мой код:
public static String stripAccents(String s)
{
/*Save ñ*/
s = s.replace('ñ', '\001');
s = s.replace('Ñ', '\002');
s = Normalizer.normalize(s, Normalizer.Form.NFD);
s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
/*Add ñ to s*/
s = s.replace('\001', 'ñ');
s = s.replace('\002', 'Ñ');
return s;
}
Работает нормально, но я хочу знать, если можно оптимизировать этот код.