Программирование
- 1 ответ
- 0 вопросов
0
Вклад в тег
/**
* разрешенные символы
*/
private static final String legalChar = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
/**
* звучности символов
* 3 - гласные
* 2 - сонорные
* 1 - шумные
* ъ и ь не имеют звучности и обозначены символом ^
*/
private static char sonic(char index) {
// абвгдежзийклмнопрстуфхцчшщъыьэюя
return ("31111311321222312113111111^3^333".charAt(index-'а'));
}
/**
* Формирует строку звучности, соответствующую строке символов
* @param value
* @return
*/
public static String strToSonic(String value) {
StringBuilder result = new StringBuilder();
// заменим ё на е
value = value.toLowerCase().replace("ё", "е");
if (value.length()>0)
// для всех символов
for (int i = 0; i < value.length(); i++) {
//if (legalChar.indexOf(value.charAt(i)) >= 0)
char ch = value.charAt(i);
// если символ разрешенный
if (legalChar.charAt(0)<=ch && ch<=legalChar.charAt(legalChar.length()-1)) {
char test = sonic(ch);
// и имеет звучность
if (test != '^')
// заменим его на звучность
result.append(test);
}
}
return result.toString();
}