19 / 19 / 4
Регистрация: 18.02.2011
Сообщений: 292
1

Английский символ в русский

26.01.2013, 22:40. Показов 7273. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Передо мной стоит задача, как можно английский символ перевести в русский. Например: буква "Q", на русс. клавиатуре будет "Й". Задача вроде легкая, буду очень рад если поможете.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2013, 22:40
Ответы с готовыми решениями:

Создать примитивный англо-русский и русско-английский словарь
Помогите создать примитивный англо-русский и русско-английский словарь. Основа - Hashtable

Перевод текста (Английский - Русский)
Подскажите, если кто сталкивался: 1) как возможно осуществить программный перевод английского...

Microsoft Speech Recognition Platform - как одновременно распознавать и русский, и английский
Добрый день. Использую Microsoft Speech Recognition Platform для распознавания голосового ввода....

Создать проект "Русско-английский и англо-русский словарь"
Создать проект "Русско-английский и англо-русский словарь", который обеспечивает перевод слов,...

30
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
27.01.2013, 01:34 2
PaZL, ну запихните в Dictionary
C#
1
2
3
var dict = new Dictionary<char,char>();
dict.Add('q','й');
...
если нужно и в обратную сторону, можете воспользоваться моим классом BijectiveDictionary, тогда после вышеприведенного кода
C#
1
dict['й'] == q;
для стандартного словаря это не выполняется. Реализация очень простая:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    class BijectiveDictionary<T> : Dictionary<T,T>
    {
        public new void Add(T x, T y)
        {
            base.Add(x,y);
            base.Add(y,x);
        }
 
        public new void Remove(T x)
        {
            base.Remove(this[x]);
            base.Remove(x);
        }
    }
или так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    class BijectiveDictionary<T> : Dictionary<T,T>
    {
        public new T this[T index]
        {
            get
            {
                if (ContainsKey(index))
                    return base[index];
                if (ContainsValue(index))
                    return this.FirstOrDefault(x => index.Equals(x.Value)).Key;
                throw new KeyNotFoundException("index");
            }
        }
    }
2
21 / 21 / 6
Регистрация: 07.01.2010
Сообщений: 376
27.01.2013, 01:34 3
PaZL, либо юзать онлайн сервис, либо написать словарь соответствия символов.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
27.01.2013, 01:38 4
Serg046, фигню говорите. В ООП switch вообще не нужен. Изредка только при использовании фабрики. Тут ей и не пахнет.
0
0 / 0 / 1
Регистрация: 18.01.2011
Сообщений: 13
28.01.2013, 19:03 5
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  string someString = "privet mir";
        
        public void BrainSaver()
        {
            MessageBox.Show(ConvertSomeStr(someString));
        }
 
 
 
        private string ConvertSomeStr(string str)
        {
            str = str.Replace("p", "п");
            str = str.Replace("r", "р");
            str = str.Replace("i", "и");
            str = str.Replace("v", "в");
            str = str.Replace("e", "е"); 
            str = str.Replace("t", "т");
            str = str.Replace("m", "м");
            return str;
            }
И так весь алфавит 8)
0
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
28.01.2013, 19:27 6
zeone, Эм.... ваш код, мягко говоря, не рационален.
0
34 / 27 / 6
Регистрация: 31.03.2012
Сообщений: 115
28.01.2013, 21:01 7
Юзай словари. Самый простой способ в данном случае)
Таблицу соответствия символов все равно придется составлять
0
0 / 0 / 1
Регистрация: 18.01.2011
Сообщений: 13
28.01.2013, 22:47 8
DimanRu,
Привет из индии
Честно говоря пробежал вопрос мельком, и подумал тчо человеку нужен конвертор с транслита, хотя не буду спорить с качеством данного решения 8) пока не силен только учусь

з.ы. будет ли он рациональнее если СтрингБайдлер использовать вместо стринга?
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
28.01.2013, 23:47 9
zeone,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var dictionary = new Dictionary<char,char>();
dictionary.Add('p', 'п');
dictionary.Add('r', 'р');
dictionary.Add('i', 'и');
dictionary.Add('v', 'в');
dictionary.Add('e', 'е'); 
dictionary.Add('t', 'т');
dictionary.Add('m', 'м');
string str = "privet";
var result = new StringBuilder();
foreach(char c in str)
   result.Append(dictionary[c]);
Console.WriteLine(result.ToString());
0
0 / 0 / 1
Регистрация: 18.01.2011
Сообщений: 13
29.01.2013, 01:05 10
Psilon,
Чем плох вариант с простым риплейсом? Зачем создавать словарь, а потом циклически заполнять новую переменную?
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
29.01.2013, 01:11 11
zeone, разница в производительности, тем более, что словарь можно создать на этапе компиляции используя инициализатор коллекции. Меньше строк не значит лучше
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
29.01.2013, 07:25 12
Цитата Сообщение от Psilon Посмотреть сообщение
Serg046, фигню говорите. В ООП switch вообще не нужен. Изредка только при использовании фабрики. Тут ей и не пахнет.
В чем преимущество здесь словаря перед switch? Объем кода будет такой-же, скорость одинаковая. Словарь имеет смысл, если данные в нем будут меняться, но в данной задаче, это не так.
Тем более более использование словаря, никак к ООП не относится.
0
0 / 0 / 1
Регистрация: 18.01.2011
Сообщений: 13
29.01.2013, 11:20 13
Psilon,
Теперь понятнее стало, спасибо.
0
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
29.01.2013, 11:24 14
zeone, Gjxbnfq про строки, вот, хотя бы тут.
StringBuilder будет куда рациональнее, но и куча строк с Replace'ами это извините.... говно-код. Оптимальный вариант - Dictionary + StringBuilder. Как и написал Psilon.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
29.01.2013, 11:40 15
turbanoff, Предложите вариант лучше,я не против
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
29.01.2013, 12:58 16
Цитата Сообщение от Psilon Посмотреть сообщение
turbanoff, Предложите вариант лучше,я не против
C#
1
2
3
4
5
string str = "privet";
var result = new StringBuilder();
foreach(char c in str)
   result.Append(getChar(c));
Console.WriteLine(result.ToString());
C#
1
2
3
4
5
6
7
8
9
10
11
private static char getChar(char c) {
   switch (c) {
    case 'p': return 'п';
    case 'r': return 'р';
    case 'i': return 'и';
    case 'v': return 'в';
    case 'e': return 'е'; 
    case 't': return 'т';
    case 'm': return 'м';
   }
}
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
29.01.2013, 13:02 17
turbanoff, издеваетесь?
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
29.01.2013, 13:28 18
Psilon, нет. Почему вы так решили? Эффективное, простое и понятное решение.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
29.01.2013, 13:56 19
Хотя бы потому, что словарь еще и короче:
C#
1
2
3
4
5
6
7
8
9
10
var getTranslit = new Dictionary<char, char>
{
    {'p', 'п'},
    {'r', 'р'},
    {'i', 'и'},
    {'v', 'в'},
    {'e', 'е'},
    {'t', 'т'},
    {'m', 'м'}
};
К тому же с хешем работа быстрее происходит..
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
29.01.2013, 14:37 20
Цитата Сообщение от Psilon Посмотреть сообщение
К тому же с хешем работа быстрее происходит..
В смысле, вы думаете, что словарь будет быстрее работать? Это не так, компилятор оптимизирует switch в практически ту-же саму хэш-таблицу.
Кол-во строк будет, практически одинаково, плюс-минус 1-2. При кол-ве строк больше 30 - практически не имеет значения.
0
29.01.2013, 14:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2013, 14:37
Помогаю со студенческими работами здесь

Русский vs Английский
date=QDate::currentDate(); time=QTime::currentTime(); ...

Русский и английский Excel
Здравствуйте, Сегодня столкнулся с проблемой языков. Русский и английский знаю хорошо и думал что...

Русский - английский сайт.
Господа, есть такой вопрос. Перевел сайт на русский. Залил на хостинг. Проблема вот в чем: ...

установить на русский офис английский интерфейс
добрый день я хотел бы узнать как можно установить на русский офис английский интерфейс. при...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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