C# с нуля By Depander <<Англо-Русский переводчик>>

Безопасный и надёжный обменник криптовалют на наличные — Insight

Aqua

Premium
Сообщения
2.141
Реакции
2.536
Создадим полный англо-русский переводчик, на C# который будет весть не более 10 кб. Как же уместиь такое огромное кол-во слов в 10 кб? Очень просто, всю нагрузку на себя возьмет .

В статье будут рассмотрены

  1. регулярные выражения
  2. работа с сетью
  3. некоторые методы класса string для форматирования строк
Примечание[я отснифал GET запрос к сайту но это не имеет отношение к теме программирования поэтому я опустил этот момент]

Приступим...

Шаг 1 (Подготовительный)
Кидаем на форму button, и два textbox-a

Создаем переменную для хранения слова которое будем переводить и присваеваем ей текст из textbox-a
Код:
string wordToTranslate = textBox1.Text;

Шаг 2 (Отправка запроса, сохранение ответа)

Выполняем HTTP запрос
Код:
HttpWebRequest wrGETURL = (HttpWebRequest)WebRequest.Create("http://translate.google.com.ua/translate_a/t?client=t&text=" + wordToTranslate + "&hl=ru&sl=en&tl=ru&ie=UTF-8&oe=UTF-8&multires=1&prev=btn&ssel=0&tsel=0&sc=1");

Принимаем ответ
Код:
HttpWebResponse vkHttpWebResponse = (HttpWebResponse)wrGETURL.GetResponse();

Ложим в ответ поток, затем сохраняем в response
Код:
StreamReader vkStreamReader = new StreamReader(vkHttpWebResponse.GetResponseStream());
string response = vkStreamReader.ReadToEnd();

Шаг 3 (Замена символов в строке)

Метод Replace заменяет в строке значение первого аргумента второй

Это я сделал что бы дальше было удобнее работать со строками
Код:
response = response.Replace('[', '1');
response = response.Replace('"', '2');

Шаг 4 (Регулярные выражения)

создаем переменную для храрнения конечного результата
Код:
string transText;

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

оно находится в таком контексте: y45yyr1112СЛОВО2y56egyrtyrt

Ниже предствалнен синтаксис регулярных выражений который мы применим в нашем выражении, для изучения полного синтаксиса смотрите msdn

Класс знаков \w cоответствует любому алфавитно-цифровому знаку.

Квантор * Соответствует предыдущему элементу ноль или более раз

Конструкция группирования (выражение) выделяет соответствующую часть выражения

Код:
Regex transTextRegex = new Regex(@"(1112)(\w*)(2)");
Match transTextMatch = transTextRegex.Match(response);
transText = transTextMatch.Value;

Шаг 5 (Завершающий)

Отрезаем от ответа ненужный мусор
Отрезаем 4 символа от начала строки
Код:
transText = transText.Remove(0, 4);

Отрезаем последний символ
Код:
 transText = transText.Remove(transText.Length - 1, 1);

И наконец готовый ответ ложим в textbox
Код:
textBox2.Text = transText;

--------

tnx for reading, hope I help

 
kaspersky keys
Верх