Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
divert
0 / 0 / 0
Регистрация: 30.08.2014
Сообщений: 99
1

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

26.09.2014, 22:43. Просмотров 2924. Ответов 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
Ответы с готовыми решениями:

Как заменить символы в строке?
У меня есть строка к примеру string str = "1,2,0,4,7,0"; мне надо заменить...

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

Как несколько точек в строке заменить на одну?
как несколько точек в строке заменить на одну

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

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

15
Бендерродригез
Сгибальщик
42 / 42 / 4
Регистрация: 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
63 / 63 / 28
Регистрация: 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
63 / 63 / 28
Регистрация: 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
63 / 63 / 28
Регистрация: 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
414 / 414 / 341
Регистрация: 12.01.2011
Сообщений: 1,520
Завершенные тесты: 6
27.09.2014, 01:26 11
Лучший ответ Сообщение было отмечено divert как решение

Решение

может такое подойдет?
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
414 / 414 / 341
Регистрация: 12.01.2011
Сообщений: 1,520
Завершенные тесты: 6
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
1045 / 852 / 194
Регистрация: 31.03.2010
Сообщений: 2,487
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
divert
0 / 0 / 0
Регистрация: 30.08.2014
Сообщений: 99
01.10.2014, 21:04  [ТС] 16
такая конструкция не работает (

Добавлено через 25 секунд
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
29
30
31
32
33
34
35
public static string translate(string txt)
{
    Dictionary<char, char> DicVer = new Dictionary<char, char>()
                {
                    {'а', 'а'},
                    {'б', 'b'},
                    {'е', 'e'},
                    {'у', 'y'},
                    {'р', 'p'},
                    {'м', 'm'},
                    {'к', 'k'},
                    {'з', '3'},
                    {'х', 'x'},
                    {'с', 'c'},
                    {'о', 'o'},
                    {'л', 'l'},
                    {'в', 'b'},
                    {'т', 't'}
                };
 
 
 
           // intxt = "привет как дела хорошая погода!";
 
Random r=new Random();
            foreach (char ch in txt)
            {
                
             if(r.Next(0,1)==0) continue;
        txt = txt.Replace(ch, DicVer.ContainsKey(ch)?DicVer[ch]:ch);
            
            }
            
   return txt;
}
Добавлено через 1 час 24 минуты
чото у меня с генератором случ чисел (
так заработало )))
C#
1
if(r.Next(0,10)>=5) continue;
0
01.10.2014, 21:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2014, 21:04

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

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

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


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

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

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