Здравствуйте, гость ( Вход | Регистрация )
Awesome | Дата 29.1.2011, 0:08 |
Пишу функцию перевода строки в транслит, столкнулся с той же проблемой. Если переводимую строку на русском указать в самой программе, то строка переводится. Но я загружаю её из файла, и ничего не работает, поэтому думаю, что проблема с кодировками. В связи с этим хотелось бы узнать поподробнее про это: лучше строковые не ASCII константы обернуть в некую функцию, например, QObject::tr() и указать библиотеке Qt кодировку исходника потому что я ничего не понял). Вот мой код, если что: Раскрывающийся текст
P.S. извините, что апаю старую тему (не знаю, ругаете вы это или нет) |
|
kwisp | Дата 6.11.2009, 12:27 |
Litkevich Yuriy, если уж делать транслит, то можно сделать и обратный таранслит. я тоже подумал про ассоциативные массивы. буковок не так много что б прям QHash использование было оправдано... ну тут дело вкуса. |
|
Litkevich Yuriy | Дата 5.11.2009, 17:25 |
wander86, регулярные выражения здесь ни к чему. где ключем будет латинская буква, значением - кирилица. наоборот, известна кирилица, её в Хэше и ищем (быстро) |
|
wander86 | Дата 5.11.2009, 16:15 |
Привет. Тут регекспами нада пользоваться, а точнее "покурите" replace. Принцип транслитерации: - Делаете ассоциативный массив, где ключем будет латинская буква, значением - кирилица. - Делаете тот же foreach цикл, и в нем уже заменяете replace'ом все символы кирилицы на латиницу. .....Не туда вроде написал (-: |
|
++Norton++ | Дата 5.11.2009, 10:57 |
Огромнейшее спасибо! QHash замечательно с этой задачей справляется! И шустро и без глюков! | |
Litkevich Yuriy | Дата 5.11.2009, 3:50 |
то в данном случае в if буква 'а' вовсе не распознается как 'а'. какая из них русская, а какая английская?Или может есть какой-то более рациональный вариант? яб словарь использовал (QMap) или Хэш (QHash), последний быстрее работаетП.С. в коде: if(str.at(i) == 'в') resultStr.append("v"); лучше строковые не ASCII константы обернуть в некую функцию, например, QObject::tr() и указать библиотеке Qt кодировку исходника |
|
++Norton++ | Дата 4.11.2009, 23:50 |
Стоит задача перевести строку QString в транслит (т.е. к примеру, русскую строку "привет мир" в "privet mir"). Хотелось бы узнать мнение, как лучше это сделать? Просто текст может быть очень большим. Переводить все просто условиями, т.е. к примеру
Или может есть какой-то более рациональный вариант? PS И хотелось бы тут же спросить, как правильно сравнивать символы в вышеприведенном случае? Сравнение как в примере выше не получается. Т.е. если есть слово "арбуз", то в данном случае в if буква 'а' вовсе не распознается как 'а'. Да и все остальные буквы также. В чем может быть дело? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 18:23 |