Программирование
Веб программирование

Англо-Русский переводчик

 
 

Создадим полный англо-русский переводчик, на C# который будет весть не более 10 кб. Как же уместиь такое огромное кол-во слов в 10 кб? Очень просто, всю нагрузку на себя возьмет www.google.com.

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

  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


Есть вопросы? Спроси на нашем форуме!!
FlashGB [27.06.2012 11:56]

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

Саня [28.06.2012 14:52]

Спасибо, статья супер

Фрагер [14.08.2012 23:12]

по-больше бы таких статьей,а то математика уже задолбала

ReDoX [15.08.2012 03:03]

а не рано ли, работа с сетью?

Дмитрий [16.08.2012 11:29]

Кому это там математика надоела?
А как же без математики?
Но отдыхать от математики тоже нужно, а то можно сойти с ума.
Спасибо за статейку, полезно.

Олег [17.08.2012 17:10]

Мет, что на сайте не появляешся , спасибо за твою программу по математике очень полезная, по крайне мере мне она пригодилась. Если сможеш напиши программу чтоб в ней все функции были с разу вместе, ну там уравнения вычисление диффиренциала ну сам посмотри. А то скоро начало сентября такие проги очень нужны. Ты молодец а математика нужна без нее не льзя изучать программирование. Хоть ты что то пишеш по математике. Вечером зайди в чат.

Met [18.08.2012 09:38]

Сегодня напишу спец для тебя программу по математике там будет все. Ну почти все.

Met [18.08.2012 09:43]

Ну ты сам тоже что нибуть попробуй напиши, все же это сайт для общения знаниями по программированию, а не написания программ на заказ.

Гость [20.08.2012 09:03]

Отличная статья! Очень помог, спасибо!

SmallByte [31.01.2013 14:33]

Тема сети не полностью раскрыта, а именно не хватает того, какие сетевые библиотеки нужно подключать, мелкое описание классов для сети, формирование запроса и куча других недоработок!



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.