Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/163: Рейтинг темы: голосов - 163, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 09.03.2015
Сообщений: 71

Транслитерация с кириллицы на латиницу

11.06.2017, 15:16. Показов 30783. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Надо сделать транслитерацию с кириллицы на латиницу. В принципе несложно,
если для такого: Лилия->Liliya, Яблоко->Yabloko.
Но если все буквы заглавные - ЯБЛОКО->YaBLOKO и это не есть хорошо (есть хорошо - YABLOKO).
Или бывает и такое ХоРоШо- KhoRoSho (а надо бы KHoRoSHo).
Так вот, как это воссоздать. Может быть использовав getChars - мысль такая: если после текущего символа следует
заглавная, то пишем все заглавные) Но что-то мутновато как-то... Может ли кто, предложить что-нибудь?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import java.util.*;
import java.lang.*;
import java.io.*;
 
 class Translit {
 
    private static final Map<String, String> letters = new HashMap<String, String>();
    static {
        letters.put("А", "A");
        letters.put("Б", "B");
        letters.put("В", "V");
        letters.put("Г", "G");
        letters.put("Д", "D");
        letters.put("Е", "E");
        letters.put("Ё", "E");
        letters.put("Ж", "Zh");
        letters.put("З", "Z");
        letters.put("И", "I");
        letters.put("Й", "I");
        letters.put("К", "K");
        letters.put("Л", "L");
        letters.put("М", "M");
        letters.put("Н", "N");
        letters.put("О", "O");
        letters.put("П", "P");
        letters.put("Р", "R");
        letters.put("С", "S");
        letters.put("Т", "T");
        letters.put("У", "U");
        letters.put("Ф", "F");
        letters.put("Х", "Kh");
        letters.put("Ц", "C");
        letters.put("Ч", "Ch");
        letters.put("Ш", "Sh");
        letters.put("Щ", "Sch");
        letters.put("Ъ", "'");
        letters.put("Ы", "Y");
        letters.put("Ъ", "'");
        letters.put("Э", "E");
        letters.put("Ю", "Yu");
        letters.put("Я", "Ya");
        letters.put("а", "a");
        letters.put("б", "b");
        letters.put("в", "v");
        letters.put("г", "g");
        letters.put("д", "d");
        letters.put("е", "e");
        letters.put("ё", "e");
        letters.put("ж", "zh");
        letters.put("з", "z");
        letters.put("и", "i");
        letters.put("й", "i");
        letters.put("к", "k");
        letters.put("л", "l");
        letters.put("м", "m");
        letters.put("н", "n");
        letters.put("о", "o");
        letters.put("п", "p");
        letters.put("р", "r");
        letters.put("с", "s");
        letters.put("т", "t");
        letters.put("у", "u");
        letters.put("ф", "f");
        letters.put("х", "h");
        letters.put("ц", "c");
        letters.put("ч", "ch");
        letters.put("ш", "sh");
        letters.put("щ", "sch");
        letters.put("ъ", "'");
        letters.put("ы", "y");
        letters.put("ъ", "'");
        letters.put("э", "e");
        letters.put("ю", "yu");
        letters.put("я", "ya");
    }
 
 
 
    public static String toTranslit(String text) {
        StringBuilder sb = new StringBuilder(text.length());
        for (int i = 0; i<text.length(); i++) {
            String l = text.substring(i, i+1);
            if (letters.containsKey(l)) {
                sb.append(letters.get(l));
            }
            else {
                sb.append(l);
            }
        }
        return sb.toString();
    }
 
 
    public static void main(String[] args) {
        String test = "Яблоко, ЯБЛОКО, ХОРОШО, ХоРоШо";
        System.out.println("toTranslit(test) = " + toTranslit(test));
    }
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2017, 15:16
Ответы с готовыми решениями:

Написать Транслеитер кириллицы на латиницу
Помогите написать Транслеитер кирилицы на латиницу. Надо кирилицу читать из txt файла потом заменить уже переведенный Спасибо...

Перевести слова в файле с кириллицы на латиницу
Ребята я написал код который должен открыть любой файл(включая xml) и в нем перевести слова по буквам(с кириллицы на латиницу). Почему мой...

Транслитерация кириллицы в латиницу
Добрый вечер. Есть процедура которая транслитерирует текст с кириллицы на латиницу, по заданному мной алфавиту. Также происходит...

7
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
12.06.2017, 12:22
Эмм, так что вам мешает в вашем map загланые транслитные буквы написать?
0
1 / 1 / 0
Регистрация: 09.03.2015
Сообщений: 71
12.06.2017, 12:39  [ТС]
Doctor_, Дело в том, что если я заменю, например 'Я' ('Ya') на 'YA', то слово Яблоко будет как YAbloko, но это неправильно.
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
12.06.2017, 12:50
Почему неправильно, если это буква Я. Тогда вообще не понятен пример с Хорошо, там вам надо чтоб было KH, а с Я нет. не логично.
0
1 / 1 / 0
Регистрация: 09.03.2015
Сообщений: 71
12.06.2017, 13:46  [ТС]
Doctor_, Видите ли, в примере "ХоРоШо", регистр букв варьируется, а слово "Яблоко" написано просто с заглавной буквы. Ну, в принципе, случай, когда регистр букв "не стабилен" можно пока не учитывать. Важно это: когда слово пишется с заглавной буквы (Яблоко) необходимо писать, таким образом - Yabloko. Когда всё слово написано заглавными буквами (ХОРОШО) - KHOROSHO. Если использовать текущий код, то слово "ХОРОШО" будет писаться - KhOROShO.
0
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
12.06.2017, 14:04
Ну тогда просто проверить, всё слово в uppercase, тогда и транслит весь в uppercase, иначе нет.
не понимаю где проблема.
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,886
13.06.2017, 02:21
Чтобы притупить состояние фрустрации
при такий транслитерации,
можешь воспользоваться схемой ISO-9.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2017, 02:21
Помогаю со студенческими работами здесь

Посимвольная транслитерация „кириллицы” в „латиницу"
Напишите программу посимвольгого преобразования „кириллицы” в „латиницу. Например Ярослав - Yaroslav

Программа на паскале. Транслитерация русских слов в латиницу.
Здравствуйте, уважаемые программисты! Я тут собрался написать программку на Паскале, да только у меня ничего не получилось :( Суть...

Перевод кириллицы в латиницу
Пишу программку, работающую с БД. Динамически создается таблица, исходя из введенных данных. Посему нужно перевести эту строку в...

Перекодировать с кириллицы на латиницу
Написать на языке ассемблер com-программу, чтобы перекодировать с кириллицы на латиницу по правилу простой замены символов из одной таблицы...

транслит с кириллицы на латиницу
Нужна прога для транслита с кириллицы на латиницу на питоне. То есть вводим определенное слово и после он должен вывести на латинице. Нашел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,886
13.06.2017, 02:21
Чтобы притупить состояние фрустрации
при такий транслитерации,
можешь воспользоваться схемой ISO-9.
0
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru