Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
1
.NET 4.x

Транслитерация английского текста в русский

21.10.2014, 11:16. Показов 4243. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задумка одна, в нескольких словах озвучу:
Например, транслитерация англ текста в русский обычно выглядит так: "Не Шевелись" -> "Ne Shevelis'".
Так вот, как бы реализовать это во время ввода с клавиатуры, с Англ на Русский?
Повторюсь, не после набора а во время. Тоесть я написал "sh" ввелось "ш"... есть идея читать по две буквы, и заменять только первую, если нет совпадений с двумя, тоесть если ввел "sx" то заменится только "s" на "с", а вторая буква в ожидании ввода еще одной...
как то так...
но получается не очень красиво, вторая ожидающая буква будет глаза мозолить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2014, 11:16
Ответы с готовыми решениями:

Транслит текста с английского на русский
Роясь на форуме нашел код транслита из русского на английский. Вопрос вот в чем: А можно ли...

Транслитерация с английского на русский
Задана строка на транслите . Преобразовать ее в строку , содержащую только русские буквы , по...

Смена раскладки текста с английского на русский и наоборот
Здравствуйте. Мне нужна такая функция, которая из текста, похожий на "qwerty йцукен" будет делать...

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

28
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
21.10.2014, 11:21 2
Посмотри как ввод японского сделан может почерпнешь идеи
1
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
21.10.2014, 11:37  [ТС] 3
arrjj, ссылка не работает. Говорит неверный id video

Добавлено через 3 минуты
arrjj, скинь под спойлер текстом или сделай как youtube video
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
21.10.2014, 11:38 4
ютюб.ком watch?feature=player_detailpage&v=LZHPG1TkydY#t=88
попробуй эту ссыль
1
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
21.10.2014, 12:24  [ТС] 5
arrjj, во во чтото подобное и я хочу реализовать тока на русский вместо японского

Добавлено через 9 минут
Если кому не лень, может кто и примерами побалует, свой скину позже, щас он не под рукой
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
21.10.2014, 12:27 6
Примерная логика:
сохраняем в буфер предыдущую введеную букву и в зависимости от неё меняем вывод.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
21.10.2014, 13:26  [ТС] 7
arrjj, можно и не сохранять, а просто прямо из текстбокса ее читать, ну суть не в этом. Это все понятно. Тут в другом трабл, чтоб не висела английская в ожидании второй буквы...
блин в голове идея крутится, но вот реализовывать начну и начнется головняк конкретный как всегда

Добавлено через 4 минуты
arrjj, хотя ты прав, на лету менять по одной, а в буфере читать сочетания, и если найдено совпадение, например "буфер + введённая = SH" значит стираем предыдущую сконвертированную C и заменаем на нашу Ш... но тоже есть неудобство... надо пробовать

Добавлено через 3 минуты
Либо еще вариант, во всплывающем туллтипе или менюшке при вводе буквы, если найдено сочетание этой буквы с другими предлагать варианты замены, что юзер видел что процесс слежения за вводом идет. Блин. Идей куча... надо мутить )))

Добавлено через 6 минут
Единичные менять проблем не составляет, а вот эти SH, CH, TS(Ц), Щ(еще не придумал), ьъ(думаю хватит одной ' ), ZH(Ж) вроде все?

Добавлено через 39 минут
Где то был у меня пример автозаполнения текстбокса по первым введенным буквам, производит поиск в массиве или из комбо бокса, предлагает варианты замены. Можно этот пример использовать в качестве подсказки ввода для пользователя... найду выложу, но он еще с vb6, но это не проблема. Переделаем.
0
1484 / 579 / 106
Регистрация: 26.03.2012
Сообщений: 1,028
21.10.2014, 14:18 8
Цитата Сообщение от Yury Komar Посмотреть сообщение
Единичные менять проблем не составляет, а вот эти SH, CH, TS(Ц), Щ(еще не придумал), ьъ(думаю хватит одной ' ), ZH(Ж) вроде все?
Зачем придумывать? Все уже придумано за нас: Транслитерация
1
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
21.10.2014, 14:29 9
По ссылке PAnT0P'а полная таблица всех вариантов транслитерации. Проблемы с вариантами ввода (sh => ш или sh => сх) можешь решить дропдауном по нажатию например Ctrl'а (т.е. единичное нажатие меняет варианты последовательно, а долгое нажатие выпадает комбобокс со всеми вариантами)
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
21.10.2014, 15:05 10
Цитата Сообщение от Yury Komar Посмотреть сообщение
Так вот, как бы реализовать это во время ввода с клавиатуры, с Англ на Русский?
Повторюсь, не после набора а во время.
А если компромиссный вариант? Пословно. Транслитерация слова целиком после ввода пробела. А до ввода пробела оно (слово) отображается как есть?
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
21.10.2014, 17:19  [ТС] 11
Юпатов Дмитрий, ну это не сложно я думаю
0
4 / 4 / 1
Регистрация: 10.03.2013
Сообщений: 43
23.10.2014, 22:06 12
Вот. Должно работать

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Public Function CHPU(ByVal str As String) As String
        Dim SB As New System.Text.StringBuilder
        Dim Rus As String() = {"а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", _
        "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", _
        "щ", "ъ", "ы", "ь", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", _
        "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", _
        "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я"}
        Dim Eng As String() = {"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 Each ch In str
            If Char.IsLetter(ch) AndAlso AscW(ch) > 192 Then
                SB.Append(Eng(Array.IndexOf(Rus, ch.ToString)))
            Else
                SB.Append(ch)
            End If
        Next
        Return SB.ToString
    End Function
а чтобы по одному заменять, то отлавливать событие нажатия клавиши и используя функцию переводить.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
25.10.2014, 17:38  [ТС] 13
KrIvEdKA, игтересный пример, мне понравился своей простотой. СПАСИБО. Только я так понял он транслитерует с Русского на Англ но не обратно?
И еще, покажи тут пример функции "ПЕРЕВОДИТЬ", тоже интересно было бы узнать что ты имеешь ввиду.
0
4 / 4 / 1
Регистрация: 10.03.2013
Сообщений: 43
26.10.2014, 12:41 14
Yury Komar, функция которую сверху скинул. Чтобы переводить обратно нужно функцию посложнее делать. Эту использовал для создания ЧПУ.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
26.10.2014, 21:36  [ТС] 15
KrIvEdKA, давай придумаем для варианта в обратном направлении... желательно посимвольно либо в момент ваода с клавиатуры - тогда вообще огонь будет. Правда очень нужно именно обратный вариант с буквами ш, щ и так далее...
спасибо за Assistance.
0
33 / 33 / 6
Регистрация: 24.11.2015
Сообщений: 330
18.01.2016, 09:24 16
Yury Komar, Пример хороший но буква ш и щ у меня как то переводится не на SH а на Si, щ на SCi.Где может быт ошибка? Функция на верху. Правильно копировал вроде.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
18.01.2016, 09:41  [ТС] 17
Khaker_tt, может скопировали неверно?
0
33 / 33 / 6
Регистрация: 24.11.2015
Сообщений: 330
18.01.2016, 10:12 18
Yury Komar, Нет правильно. только буква H(анг) у меня компьютер не определять. Даже в Ms-word тоже напечатает i это по моему неполадка в системе.

Добавлено через 3 минуты
Ага нашёл мне надо было заменить Щ на Ы и наоборот. Спасибо тема Close.

Добавлено через 21 минуту
Я рано порадовался. Нет так не пойдёт я тестировал на другой комп мои изменения неправильно. Значить проблема точно компе.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
18.01.2016, 10:34  [ТС] 19
Khaker_tt, проблема в раскладке клавиатуры видимо.
0
11 / 11 / 4
Регистрация: 02.04.2015
Сообщений: 147
18.01.2016, 14:21 20
Yury Komar, так проще всего:
VB.NET
1
2
3
4
5
6
7
8
9
Public Class Form1
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        Dim s As String = Trim(TextBox1.Text.ToLower)
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Space) Then
            s = s.Replace("n", "н").Replace("e", "е").Replace("sh", "ш").Replace("v", "в").Replace("l", "л").Replace("i", "и").Replace("s", "с").Replace("'", "ь")
            TextBox2.Text = s
        End If
    End Sub
End Class
и так далее
Миниатюры
Транслитерация английского текста в русский  
2
18.01.2016, 14:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2016, 14:21
Помогаю со студенческими работами здесь

Перевод меню с английского на русский.
Есть меню вида var menu_label:Array = new Array("Main page", "Leadership in life", "Leader in...

Переводчик с английского на русский и наоборот
Может есть у кого то переводчик на с++ с английского на русский и наоборот работающий? посмотрел...

Дешифратор с английского языка на русский
Помогите с написанием программы. Нужен дешифратор. Есть 3 textbox и 2 button. В первый textbox1...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru