Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
divert
0 / 0 / 0
Регистрация: 30.08.2014
Сообщений: 99
#1

Как заменить кириллицу на латиницу в строке? - C#

26.09.2014, 22:43. Просмотров 2504. Ответов 15
Метки нет (Все метки)

как заменить кириллицу на латиницу в строке?
есть допустим
строка вида (привет как дела хорошая погода!)
нужно её превратить в (пpиbet kak дela хoрошaя погода)
есть два массива:

C#
1
2
var rus = new string[]{"а","о","е","у","р","м","к","з","х","с"};
var eng = new string[]{"a","o","e","y","p","m","k","3","x","c"};

как в цикле перебрать каждый символ строки . то есть если символ есть в массиве rus тогда его заменить на эквивалент с массива eng


Спасибо за ответы
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2014, 22:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как заменить кириллицу на латиницу в строке? (C#):

Как в строке заменить один символ на другой - C#
Здравствуйте Подскажите пожалуйста как в строке можно заменить один символ на другой

Как заменить в строке несколько пробелов на один? - C#
усли в строке между словами несклько пробелов, то как сделать чтобы между словами остался один пробел и этот пробел заменился на символ...

Как заменить в каждой четной строке все гласные буквы на большие - C#
Как заменить в каждой четной строке все гласные буквы на большие?

Как прочитать кириллицу из файла? - C#
И как сделать красивую таблицу, чтобы шрифт не такой огромный был? using System; using System.Collections.Generic; using...

Как подружить UploadFile и кириллицу? - C#
Пожалуйста подскажите. Выгружаю на ФТП текстовый файл - содержимое файла русским текстом выгружается корректно, а наименование файла...

Задана матрица С(5,5). Если минимальный элемент стоит в первой строке, то все элементы, стоящие в строке за ним, заменить нулями. - C#
Задана матрица С(5,5). Если минимальный элемент стоит в первой строке, то все элементы, стоящие в строке за ним, заменить нулями.

15
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
26.09.2014, 22:48 #2
http://msdn.microsoft.com/ru-ru/library/fk49wtc1(v=vs.110).aspx
0
igor_fl
62 / 62 / 15
Регистрация: 18.03.2014
Сообщений: 794
Завершенные тесты: 2
26.09.2014, 22:50 #3
Как вариант можно создать Dictionary. Где ключом будет буква кирилицы, а значением английский аналог.
1
divert
0 / 0 / 0
Регистрация: 30.08.2014
Сообщений: 99
26.09.2014, 23:33  [ТС] #4
Цитата Сообщение от igor_fl Посмотреть сообщение
Как вариант можно создать Dictionary. Где ключом будет буква кирилицы, а значением английский аналог.
а можно пример?

Добавлено через 17 минут
C#
1
2
3
4
5
Dictionary<string, string> DicVer = new Dictionary<string, string>();
 
DicVer.Add("а","а");
DicVer.Add("б","b");
DicVer.Add("к","k");
Добавлено через 49 секунд
таким образом я заполню массив . так ?
а как потом сделать замену букв в строке ?
0
igor_fl
62 / 62 / 15
Регистрация: 18.03.2014
Сообщений: 794
Завершенные тесты: 2
26.09.2014, 23:35 #5
Ну вот вы создали словарь. Теперь как вариант
C#
1
2
3
4
5
string str="Привет с форума",res="";
foreach(char ch in str)
{
       res+=DicVer[c.ToString()];
}
И не забудь в словарь пробел
1
divert
0 / 0 / 0
Регистрация: 30.08.2014
Сообщений: 99
26.09.2014, 23:57  [ТС] #6
ок. а как добавить рандом в цикл . типа если 1 букву меняем если 0 букву оставляем

Добавлено через 17 минут
вылетает с ошибкой ((((((


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 Dictionary<string, string> DicVer = new Dictionary<string, string>();
 
            DicVer.Add("а", "а");
            DicVer.Add("б", "b");
            DicVer.Add("е", "e");
            DicVer.Add("у", "y");
            DicVer.Add("?", "??");
            DicVer.Add("р", "p");
            DicVer.Add("м", "m");
            DicVer.Add("к", "k");
            DicVer.Add("з", "3");
            DicVer.Add("х", "x");
            DicVer.Add("с", "c");
            DicVer.Add(" ", " ");
            DicVer.Add("о", "o");
 
            string str = "Привет с форума", trans = "";
 
            foreach (char ch in str)
            {
                trans += DicVer[ch.ToString()];
            }
            textBox1.Text = trans;
Добавлено через 48 секунд
trans += DicVer[ch.ToString()]; (Необработанное исключение типа)
0
igor_fl
62 / 62 / 15
Регистрация: 18.03.2014
Сообщений: 794
Завершенные тесты: 2
27.09.2014, 00:26 #7
писал на скорую руку, тут есть пример как получить значение из словаря тут
1
Ev_Hyper
Заблокирован
27.09.2014, 00:42 #8
divert, вы не весь возможный алфавит занесли в словарь, поэтому и исключение выбивает.
0
divert
0 / 0 / 0
Регистрация: 30.08.2014
Сообщений: 99
27.09.2014, 01:08  [ТС] #9
я понял а как проверить? если нет символа в словаре пропустить символ

C#
1
2
 if (DicVer[ch.ToString()] == null) { trans += ch.ToString(); }
                else { trans += DicVer[ch.ToString()]; }
Добавлено через 1 минуту
но так не работает (
0
Ev_Hyper
Заблокирован
27.09.2014, 01:11 #10
divert, например так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            var rus = new string[] { "а", "о", "е", "у", "р", "м", "к", "з", "х", "с" };
            var eng = new string[] { "a", "o", "e", "y", "p", "m", "k", "3", "x", "c" };
            string one = String.Join("", rus);
            string two = String.Join("", eng);
            Console.WriteLine(one);
            Console.WriteLine(two);
            var x = one.Select((a, b) => new KeyValuePair<char, char>(a, two[b])).ToDictionary(y => y.Key, y => y.Value);
            /*foreach (var z in x)
                Console.WriteLine("[{0} {1}]", z.Key, z.Value);*/
            string text = "Привет, мир!";
            string str = string.Empty;
            foreach (var c in text)
            {
                if (x.ContainsKey(c))
                    str += x[c];
                else str += c;
            }
            Console.WriteLine(str);
Код
аоеурмкзхс
aoeypmk3xc
Пpивeт, mиp!
Для продолжения нажмите любую клавишу . . .
0
sk007
Life Builder
413 / 413 / 150
Регистрация: 12.01.2011
Сообщений: 1,513
Завершенные тесты: 5
27.09.2014, 01:26 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
может такое подойдет?
C#
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
Dictionary<char, char> DicVer = new Dictionary<char, char>()
                {
                    {'а', 'а'},
                    {'б', 'b'},
                    {'е', 'e'},
                    {'у', 'y'},
                    {'р', 'p'},
                    {'м', 'm'},
                    {'к', 'k'},
                    {'з', '3'},
                    {'х', 'x'},
                    {'с', 'c'},
                    {'о', 'o'},
                    {'л', 'l'},
                    {'в', 'b'},
                    {'т', 't'}
                };
 
 
 
            string str = "привет как дела хорошая погода!";
 
            foreach (char ch in str)
            {
                str = str.Replace(ch, DicVer.ContainsKey(ch)?DicVer[ch]:ch);
            }
 
            Console.WriteLine(str);
1
divert
0 / 0 / 0
Регистрация: 30.08.2014
Сообщений: 99
27.09.2014, 09:56  [ТС] #12
спасибо за ответ!

как добавить условие? типа если 1 букву меняем если 0 букву оставляем
if (new Random().Next(0, 1) == 1)
{ }
0
sk007
Life Builder
413 / 413 / 150
Регистрация: 12.01.2011
Сообщений: 1,513
Завершенные тесты: 5
27.09.2014, 12:33 #13
divert, Я перечитал ваш последний вопрос несколько раз, но так и не понял какое условие нужно составить, можно как-нибудь по понятнее?

Добавлено через 46 секунд
Цитата Сообщение от divert Посмотреть сообщение
если 1 букву меняем если 0 букву оставляем
Мне не понятно вот это строка
0
divert
0 / 0 / 0
Регистрация: 30.08.2014
Сообщений: 99
27.09.2014, 20:45  [ТС] #14
опишу подробно. мне нужно не все символы менять в строке а выборочно. зависит от Random
тоесть в цикле new Random().Next(0, 1) если Random выдал 1 букву меняем если 0 букву оставляем без изменений
0
Learx
1039 / 846 / 86
Регистрация: 31.03.2010
Сообщений: 2,466
29.09.2014, 14:24 #15
C#
1
2
3
4
5
6
Random r=new Random();
foreach (char ch in str)
            {
                if(r.Next(0,1)==0) continue;
                str = str.Replace(ch, DicVer.ContainsKey(ch)?DicVer[ch]:ch);
            }
1
29.09.2014, 14:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2014, 14:24
Привет! Вот еще темы с ответами:

Шифрования DES, как подлючить кириллицу? - C#
Всем привет! Друзья вот код программы : using System; using System.Collections.Generic; using System.ComponentModel; using...

Как преобразовать кириллицу в формат пригодный для get-запроса - C#
Подскажите, ребят, как преобразовать кириллицу в формат пригодный для get-запроса средством C#. привет =...

Заменить символы в строке - C#
Помогите написать программу задание: Дан текст. Некоторые фрагменты его выделены группами символов @@. Заменить выделение группами символов...

Заменить подстроку в строке - C#
Помогите плиз сделать на C#) Даны три строки: S1, S2, S3. Заменить в строке S1 первое вхождения строки S2 на S3.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.