Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
46 / 8 / 1
Регистрация: 20.08.2010
Сообщений: 53

Перевод из кириллицы в транслит

10.07.2012, 12:40. Показов 6673. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто нить, подкиньте толковый пример перевода строки из кириллицы в транслит. Заранее благодарен...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.07.2012, 12:40
Ответы с готовыми решениями:

Замена кириллицы на транслит
Задача такая: В текстовое окно вводиться кириллица и автоматически переводит в транслит. Если была введена допустим ш то в транслите sh...

Перевод слова из кириллицы в транслит
нужна функция перевода слова из кириллицы в транслит

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

10
Заблокирован
10.07.2012, 15:38
Тут на форуме кто-то уже писал пример перекодировки букв в последующие к примеру если стоит "А" тогда программа введет "Б". Там просто алфавит поменять на ENG. Поищи на страницах.
0
46 / 8 / 1
Регистрация: 20.08.2010
Сообщений: 53
10.07.2012, 17:04  [ТС]
Да нет... все это не то... Короче, как всегда.. сам спрашиваю, сам себе же и отвечаю..

Написал такой вот пример:

Кидаем на форму text1, text2, command1. далее вставляем вот этот код:

Visual Basic
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
Private Sub Command1_Click()
Dim c
Dim i
Dim flag
Dim j
Dim outchr
Dim outstr
 
Dim Rus As Variant
    Rus = Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", _
    "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", _
    "щ", "ъ", "ы", "ь", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", _
    "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", _
    "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я")
    
Dim Eng As Variant
    Eng = Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", _
    "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", _
    "sh", "sch", "''", "y", "'", "e", "yu", "ya", "A", "B", "V", "G", "D", _
    "E", "JO", "ZH", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", _
    "S", "T", "U", "F", "KH", "TS", "CH", "SH", "SCH", "''", "Y", "'", "E", "YU", "YA")
 
    For i = 1 To Len(Text1.Text)
        c = Mid(Text1.Text, i, 1)
              flag = 0
        For j = 0 To 65
            If Rus(j) = c Then
                outchr = Eng(j)
                flag = 1
                Exit For
            End If
        Next j
        If flag Then outstr = outstr & outchr Else outstr = outstr & c
    Next i
        
        Text2.Text = outstr
 
End Sub
Всем спасибо! Вопрос решён, тему можно закрывать!!
1
Заблокирован
10.07.2012, 17:07
Было это! Говорю же тебе.
0
46 / 8 / 1
Регистрация: 20.08.2010
Сообщений: 53
10.07.2012, 17:12  [ТС]
Цитата Сообщение от inv.DS Посмотреть сообщение
Было это! Говорю же тебе.
в интернете 100500 вариантов решений моего вопроса... но все такие убогие и кривые что жуть просто.. Все примеры которые я видел, этому и в подметки не годятся.. (лично моё мнение), а тебе спасибо за интерес, проявленный к моему вопросу )
0
 Аватар для Апострофф
9908 / 3923 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
10.07.2012, 22:16
TYM, держи примочку вместо 23-34 строки своего кода,
да и самомнения поубавь
Visual Basic
1
2
3
4
5
6
7
8
9
10
    For i = 1 To Len(Text1.Text)
        c = Mid(Text1.Text, i, 1)
        For j = 0 To 65
            If Rus(j) = c Then
                c = Eng(j)
                Exit For
            End If
        Next j
        outstr = outstr & c
    Next i
Кстати, вложенный For j = 0 To 65 цикл здесь тот ещё тормоз!
Букву Ё, а также разницу между строчными и заглавными буквами можно объехать стандартными операторами и функциями VBA
2
Эксперт Hardware
 Аватар для Linoge
3205 / 1915 / 324
Регистрация: 25.10.2011
Сообщений: 5,564
11.07.2012, 11:54
Еще вариант без тормозного второго цикла
Visual Basic
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
Private Sub Command1_Click()
Dim Eng
Eng = Array("A", "B", "V", "G", "D", "E", "ZH", "Z", "I", "J", "K", _
"L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "KH", "TS", "CH", _
"SH", "SCH", "''", "Y", "'", "E", "YU", "YA", _
"a", "b", "v", "g", "d", "e", "zh", "z", "i", "j", "k", "l", "m", _
"n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", _
"sch", "''", "y", "'", "e", "yu", "ya", "jo", "JO")
    
st_in = Text1.Text
st_out = ""
For i = 1 To Len(st_in)
    c = Asc(Mid(Text1.Text, i, 1))
    If c >= Asc("А") And c <= Asc("я") Then
        t = Eng(c - 192)
    ElseIf c = Asc("ё") Then
        t = Eng(64)
    ElseIf c = Asc("Ё") Then
        t = Eng(65)
    Else
        t = Chr(c)
    End If
    st_out = st_out & t
Next i
        
Text2.Text = st_out
End Sub
2
 Аватар для Апострофф
9908 / 3923 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
11.07.2012, 15:20
Цитата Сообщение от Апострофф Посмотреть сообщение
Кстати, вложенный For j = 0 To 65 цикл здесь тот ещё тормоз!
Цитата Сообщение от Linoge Посмотреть сообщение
Еще вариант без тормозного второго цикла
Ну я примерно это и имел ввиду...
Но написал бы чуть нагляднее и короче, хотя далеко не факт, что оптимальнее и быстрее?
Visual Basic
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
Private Sub Command1_Click()
Dim Eng
Eng = Array("A", "B", "V", "G", "D", "E", "ZH", "Z", "I", "J", "K", _
"L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "KH", "TS", "CH", _
"SH", "SCH", "''", "Y", "'", "E", "YU", "YA", _
"a", "b", "v", "g", "d", "e", "zh", "z", "i", "j", "k", "l", "m", _
"n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", _
"sch", "''", "y", "'", "e", "yu", "ya") ', "jo", "JO")
    
st_in = Text1.Text
st_out = ""
For i = 1 To Len(st_in)
    c = Mid(Text1.Text, i, 1)
    Select Case c
    Case "А" To "я"
      c = Eng(Asc(c) - 192)
    Case "ё"
      c = "jo"
    Case "Ё"
      c = "JO"
    End Select
    st_out = st_out & c
Next i
        
Text2.Text = st_out
 
End Sub
1
46 / 8 / 1
Регистрация: 20.08.2010
Сообщений: 53
11.07.2012, 15:41  [ТС]
)) Во первых всем спасибо за участие в помощи мне )) Тогда следующий вопрос, чтобы не создавать новую ветку.. Была строка Ивано Иван Иванович (стало с помощью транслита Ivanov Ivan Ivanovich).. Теперь необходимо все это причесать и привести в такой вот вид - Ivanov_II... т.е. после фамилии вставить нижнее подчеркивание, имя и отчество обрезать по первую заглавную букву... Как обрезать имя и фамилию.. Хотяб намекните... я подхвачу сам ))
0
 Аватар для Апострофф
9908 / 3923 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
11.07.2012, 15:55
Сначала преобразуем исходную строку
Visual Basic
1
2
3
s="Иванов Иван Иванович"
a=split(s)
s=a(0) & "_" & left(a(1),1) & left(a(2),1)
далее по той же схеме...
1
 Аватар для KoGG
5637 / 1619 / 418
Регистрация: 23.12.2010
Сообщений: 2,428
Записей в блоге: 1
25.07.2012, 17:50
Лучший ответ Сообщение было отмечено как решение

Решение

Обратная процедура - из транслита в кириллицу:
Visual Basic
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
Private Sub CommandButton2_Click()
    Dim c$, outchr$, outstr$, strIn$
    Dim i%, j%, flag As Boolean
 
    Rus = Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", _
    "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", _
    "щ", "ъ", "ы", "ь", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", _
    "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", _
    "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я")
    
    Dim Eng As Variant
    Eng = Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", _
    "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", _
    "sh", "sch", "''", "y", "'", "e", "yu", "ya", "A", "B", "V", "G", "D", _
    "E", "JO", "ZH", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", _
    "S", "T", "U", "F", "KH", "TS", "CH", "SH", "SCH", "''", "Y", "'", "E", "YU", "YA")
 
    strIn = Text1.Text
    For i = 1 To Len(strIn)
        flag = False
        c = Mid(strIn, i, 3)
        For j = 26 To 58
            If Eng(j) = c Then
                outchr = Rus(j)
                flag = True
                i = i + 2
                Exit For
            End If
        Next j
        If Not flag Then
            c = Mid(strIn, i, 2)
            For j = 6 To 65
                If Eng(j) = c Then
                    outchr = Rus(j)
                    flag = True
                    i = i + 1
                    Exit For
                End If
            Next j
        End If
        If Not flag Then
            c = Mid(strIn, i, 1)
            For j = 0 To 65
                If Eng(j) = c Then
                    outchr = Rus(j)
                    flag = True
                    Exit For
                End If
            Next j
        End If
        If flag Then outstr = outstr & outchr Else outstr = outstr & c
    Next i
    Text2.Text = outstr
End Sub
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.07.2012, 17:50
Помогаю со студенческими работами здесь

Копипаст кириллицы, транслит и тэдэ...
Довелось мне на одном форуме порасспрашивать коллег про мои проблемы с копипастом кириллицы из одной IDE в обычные редакторы. Вместо...

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

Перевод текста в транслит
Проблема, а точнее задачка: Мне нужно сделать вот такую программку. Структура такова, Дано два TMemo и кнопка. Суть программы вводим в...

Перевод в транслит и обратно
Здравствуйте. Помогите, пожалуйста, с прогой. Нужно сделать так, чтобы любая строка переводилась в транслит и обратно. Заранее спасибо.

перевод русских букв в транслит
Задача: Перевести русские буквы в транслит, с ведением протокола.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru