/
monzikov
/
past-solution
Обзор
Документация
Войти
/
monzikov
/
past-solution
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/edu/mai/pastsolution/IcanTransliterator.java
59 строк
3 KB
Yuri Monzikov
add past-solution code
04 июл 2026, 14:38
04 июл 2026, 14:38
1516693
Код
Авторство
О чём код?
package edu.mai.pastsolution; import java.util.HashMap; import java.util.Map; public class IcanTransliterator { private static final Map<Character, String> ICAN_MAP = new HashMap<>(); static { ICAN_MAP.put('А', "A"); ICAN_MAP.put('Б', "B"); ICAN_MAP.put('В', "V"); ICAN_MAP.put('Г', "G"); ICAN_MAP.put('Д', "D"); ICAN_MAP.put('Е', "E"); ICAN_MAP.put('Ё', "E"); ICAN_MAP.put('Ж', "ZH"); ICAN_MAP.put('З', "Z"); ICAN_MAP.put('И', "I"); ICAN_MAP.put('Й', "I"); ICAN_MAP.put('К', "K"); ICAN_MAP.put('Л', "L"); ICAN_MAP.put('М', "M"); ICAN_MAP.put('Н', "N"); ICAN_MAP.put('О', "O"); ICAN_MAP.put('П', "P"); ICAN_MAP.put('Р', "R"); ICAN_MAP.put('С', "S"); ICAN_MAP.put('Т', "T"); ICAN_MAP.put('У', "U"); ICAN_MAP.put('Ф', "F"); ICAN_MAP.put('Х', "KH"); ICAN_MAP.put('Ц', "TS"); ICAN_MAP.put('Ч', "CH"); ICAN_MAP.put('Ш', "SH"); ICAN_MAP.put('Щ', "SHCH"); ICAN_MAP.put('Ъ', "IE"); ICAN_MAP.put('Ы', "Y"); ICAN_MAP.put('Ь', ""); ICAN_MAP.put('Э', "E"); ICAN_MAP.put('Ю', "IU"); ICAN_MAP.put('Я', "IA"); //не теряем то, что уже возможно транслитерировано ICAN_MAP.put('A', "A"); ICAN_MAP.put('B', "B"); ICAN_MAP.put('C', "C"); ICAN_MAP.put('D', "D"); ICAN_MAP.put('E', "E"); ICAN_MAP.put('F', "F"); ICAN_MAP.put('G', "G"); ICAN_MAP.put('H', "H"); ICAN_MAP.put('I', "I"); ICAN_MAP.put('J', "J"); ICAN_MAP.put('K', "K"); ICAN_MAP.put('L', "L"); ICAN_MAP.put('M', "M"); ICAN_MAP.put('N', "N"); ICAN_MAP.put('O', "O"); ICAN_MAP.put('P', "P"); ICAN_MAP.put('Q', "Q"); ICAN_MAP.put('R', "R"); ICAN_MAP.put('S', "S"); ICAN_MAP.put('T', "T"); ICAN_MAP.put('U', "U"); ICAN_MAP.put('V', "V"); ICAN_MAP.put('W', "W"); ICAN_MAP.put('X', "X"); ICAN_MAP.put('Y', "Y"); ICAN_MAP.put('Z', "Z"); } /** * Транслитерируем строку по стандарту ICAN. * Сохраняем дефисы, пробелы и другие не-кириллические символы. */ public static String transliterate(String source) { if (source == null || source.isBlank()) { return source; } // Переводим всю строку в верхний регистр String upperSource = source.toUpperCase(); StringBuilder result = new StringBuilder(upperSource.length() * 2); for (int i = 0; i < upperSource.length(); i++) { char ch = upperSource.charAt(i); if (ICAN_MAP.containsKey(ch)) { result.append(ICAN_MAP.get(ch)); } else { result.append(ch); } } return result.toString(); } }