Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 00:49   #1
Odyssey
Подтвердите свой е-майл
 
Регистрация: 11.02.2012
Сообщений: 8
Смех поиск конца слова... C#

Друзья, помогите пожалуйста, кому не трудно, проблема такая, пишу переводчик, есть класс который выполняет перевод (ниже), но собственно проблема, переводит только одно слово

Помогите решить проблему, полагаю, здесь нужен поиск конца слова. Но как потом снова запустить поиск и перевод, следующего слова? Язык C#.

Спасибо заранее


Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace V._4
{
    class translate
    {
        int i=0;
        
        string[] ru = new string[File.ReadAllLines("data/general/ru.txt").Length];
        string[] en = new string[File.ReadAllLines("data/general/en.txt").Length];

        public translate(string word, TextBox textBox, int index)
        {
            // Переводим с русского.
            if (index == 0)
            {
                int dl = ru.Length;

                for (int i = 0; i < dl; i++)
                {
                    ru[i] = File.ReadAllLines(@"data/general/ru.txt")[i];
                    en[i] = File.ReadAllLines(@"data/general/en.txt")[i];
                    
                    if (ru[i].Equals(word, StringComparison.CurrentCultureIgnoreCase))
                    { textBox.Text = en[i]; return; }
                }
            }

            // Переводим с английского.
            if (index == 1)
            {
                for (int i = 0; i < en.Length; i++)
                {
                    en[i] = File.ReadAllLines(@"data/general/en.txt")[i];
                    ru[i] = File.ReadAllLines(@"data/general/ru.txt")[i];

                    if (en[i].Equals(word, StringComparison.CurrentCultureIgnoreCase))
                    { textBox.Text = ru[i]; return; }
                }
            }
        }
    }
}

Последний раз редактировалось Odyssey; 25.03.2012 в 01:00.
Odyssey вне форума Ответить с цитированием
Старый 25.03.2012, 01:57   #2
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Код:
 textBox.Text = en[i]
Каждый проход цикла будет заменять уже имеющийся там текст.
Нужно скорее всего добавлять.

Чтобы разделить текст на слова можно воспользоватся split'om.
http://msdn.microsoft.com/ru-ru/libr...ing.split.aspx

Разбить весь текст на массив слов и разделителей(пробелы и различные знаки), каждый элемент провериь в "словаре" если есть совпадения перевести и добавить в конечный текст, если нет значит скопировать в конечный текст.
textBox.Text += перевод.
Lime вне форума Ответить с цитированием
Старый 27.03.2012, 17:08   #3
Odyssey
Подтвердите свой е-майл
 
Регистрация: 11.02.2012
Сообщений: 8
По умолчанию

Спасибо
Odyssey вне форума Ответить с цитированием
Старый 28.03.2012, 12:47   #4
stalsoft
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 147
По умолчанию

разбить текст на слова??
ну думаю что можно сделать проще - без циклов.
К примеру...есть у нас TextBox. В него User вводит слова для перевода.
Есть несколько вариантов, например - "111, 222,333 444"
На примере видно, что User разделяет слова:
-запятая и пробел;
-запятая без пробела;
-только пробел.

Соответственно нам нужно сделать так:
List<string> words = richTextBox1.Text.Split(new string[] { ",", ", ", ",", " " }, StringSplitOptions.None).ToList();

В итоге мы получим List с 5 элементами, где один из них будет просто пробел. Так как пробелы нам не нужны, то их нужно удалить. То как удалять - это уже совсем другая тема. Собственно все, у нас есть List с 4 элементами - 4 словами для перевода.

П.С. мне кажется это хороший пример!
У женщин чары образуются из стрингов;
А у программистов наоборот - стринги образуются из чаров;
stalsoft вне форума Ответить с цитированием
Старый 29.03.2012, 12:12   #5
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
StringSplitOptions.None
Цитата:
Так как пробелы нам не нужны, то их нужно удалить.
Ну раз вам нужно удалить, тогда
Цитата:
StringSplitOptions.RemoveEmptyEntri es
Цитата:
{ ",", ", ", ",", " " }
Зачем эти извращения? достаточно по одному экземпляру каждого знака, ведь это не слова и они переносятся в конечный текст!
Но переводчики обычно переводят слова, а не удаляют различные знаки препинания и исправляют орфографические ошибки.
Цитата:
ну думаю что можно сделать проще - без циклов.
И в любом случае после получения списка слов (с или без "лишних" знаков) необходимо попытатся перевести каждое слово, и лучше цикла для этой задачи ничего нет.

Последний раз редактировалось Lime; 29.03.2012 в 12:14.
Lime вне форума Ответить с цитированием
Старый 01.04.2012, 20:26   #6
stalsoft
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 147
По умолчанию

Lime, мы ж не пишем гугл транслейт) я просто подал свой пример, который я на лету и придумал (это я об удалениях знаков, таких как запятые, и тд и тп, и об исправлениях ошибок).

То что без циклов там никак - согласен! я просто неправильно выразился, я имел ввиду, что FOR циклы - лишнее там.

а извращение, как ты остро подмети { ",", ", ", ",", " " } )))) там мне кажется необходимо) долго писать и объяснять мое мнение) так что не буду)

вот))))
У женщин чары образуются из стрингов;
А у программистов наоборот - стринги образуются из чаров;
stalsoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск слова в строке и редактирование этого слова Wasili4 Microsoft Office Excel 3 22.06.2011 21:06
Поиск слова shanluu Общие вопросы Delphi 1 08.10.2010 22:02
Разбить текст на слова и произвести поиск каждого слова по текстовому массиву Burning_brook Microsoft Office Excel 2 22.05.2010 01:56
Поиск слова Chartvit Общие вопросы C/C++ 2 08.12.2009 21:57
Поиск 'Слова' JakSon Работа с сетью в Delphi 1 20.04.2008 00:13