Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Разобраться в строках


Автор: Integra 23.4.2007, 18:29
Как в введенном textbox тексте найти все длинные слова?? Подскажите пожалуйста. Только начала изучать C# smile 

Автор: Retro 24.4.2007, 00:29
Цитата(Integra @  23.4.2007,  17:29 Найти цитируемый пост)
Как в введенном textbox тексте найти все длинные слова?

Что такое длинные слова???

Автор: XavierElf 24.4.2007, 09:27
Ты хотя бы определись, со скольки символов у тебя слово считается длинным!  smile 

Автор: HCman 24.4.2007, 09:41
Наверно надо примерно так (код не отлаживал, небыло времени):
Код

            string str = tb.Text;
            int i = 0;
            while (str.IndexOf(" ", i) > 0)
            {
                if (str.Substring(i, str.IndexOf(" ", i)).Length > 5)
                { 
                    ///..........
                }
                i = str.IndexOf(" ", i);
            }


Автор: Integra 24.4.2007, 17:11
Длинные слова-т.е. слова, длина которых больше , чем других слов. Возможно их несколько  с одинаковой длинной. 
2 HCman :
что означает в этой строке: if (str.Substring(i, str.IndexOf(" ", i)).Length > 5)   число 5??
То есть длина слова, больше 5?? 

Автор: ivashkanet 25.4.2007, 09:03
Integra, т.е. найти самое длинное слово (слова, если их несколько)?

Автор: HCman 25.4.2007, 09:40
ну тогда тебе примерно нужен такой код (я его не отложивал, даже не компилил)
Код

            string str = "sdfdsa sdfsdf xcvz sdfw sdfa";
            string[] str1;
            int max = 0;
            ArrayList result = new ArrayList(); ;
            string[] str1Sep = new string[] { " " }; //массив разделителей между словами
            str1 = str.Split(str1Sep, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < str1.Length; i++)
            {
                if (str1[i].Length > max)
                {
                    result.Clear();
                    result.Add(str1[i]);
                    max = str1[i].Length;
                }
                if (str1[i].Length == max)
                    result.Add(str1[i]);
            }


Автор: Integra 11.5.2007, 15:01
2 HCman : в данном ArrayListe будут все максимальне слова одинаковой длины? Если да, то как вывести весь этот список слов в текстбокс? 

Я писала код без этого листа, но он выводит мне только 2 слова, одинаковой длины. А третье,4, и т.д. ни в какую... Что мне сделать?
Могу потом свой код этт написать... smile 

Автор: Darkmaster 11.5.2007, 17:01
Вот так вот будет работать все, что ты хочешь

Код

private void button1_Click(object sender, EventArgs e)
        {
            ArrayList result = new ArrayList();
            string[] words;
            int max = 0;
            words = textBox1.Text.Split(' ');
            for (int i = 0; i < words.Length; i++) 
            {

                if (words[i].Length == max)
                {
                    result.Add(words[i]);
                }
                if(words[i].Length > max)
                { 
                    result.Clear();
                    result.Add(words[i]);
                    max = words[i].Length;
                }
                
            }
            textBox1.Clear();
            for(int i =0; i < result.Count; i++)
            {
          
                textBox1.Text += result[i] + " ";
            } 
        }

Автор: Integra 12.5.2007, 15:57
Большое спасибо!!! очень помогли!!!  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)