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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2013, 14:22   #1
Nickolai47
Пользователь
 
Регистрация: 24.10.2012
Сообщений: 37
По умолчанию C# строка

нужно упростить код!
по заданию найти максимальное число, число считать последовательность до букв, т.е в строке "при324мер34" должно вывести 324.
Код работает но надо как то упростить слишком уж много действий лишних...
Код:
private void button1_Click(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            string ss = null;
            int max = 0; 
            int k = 0; 
            for (int i = 0; i < s.Length; i++)
                if ((s[i] >= '0') && (s[i] <= '9'))
                {
                    k = 1;
                    ss += s[i];
                    if (max < Convert.ToInt32(ss))
                        max = Convert.ToInt32(ss);
                }
                else
                {
                    ss = null;
                }
            if (k == 1)
                 textBox2.Text = Convert.ToString(max);
            else 
                 textBox2.Text = "Цифр нет";
        }
    }
}
Nickolai47 вне форума Ответить с цитированием
Старый 16.06.2013, 16:11   #2
Serg94
Форумчанин
 
Аватар для Serg94
 
Регистрация: 10.12.2011
Сообщений: 167
По умолчанию

мой вариант
Код:

            string line = textBox1.Text;
            int max = 0;
            string text = "";
            bool flag = false;
            for (int i = 0; i < line.Length; ++i)
            {
                if (Char.IsDigit(line[i]))
                {
                    text += line[i];
                    flag = true;
                }
                else
                {
                    if (text != "")
                        if (int.Parse(text) > max)
                            max = int.Parse(text);
                    text = "";

                }
            }
            if (flag)
                textBox2.Text = Convert.ToString(max);
            else
                textBox2.Text = "Нет цифр";
Serg94 вне форума Ответить с цитированием
Старый 16.06.2013, 17:13   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Упростим?:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "при324мер34";
            int max=0;
            foreach(Match m in new Regex(@"\d+").Matches(s)){
                int k=Convert.ToInt32(m.Value);
                max=(k>max)?k:max;
            }
            Console.Write("{0}", max);
            Console.ReadKey();
        }
    }
}
Я уверен что можно еще проще, если через LINQ сделать.

P.S. Вот собственно я оказался прав:
Код:
            string s = "при324мер34";
            var a = from Match m in new Regex(@"\d+").Matches(s) select Convert.ToInt32(m.Value);
            Console.Write("{0}", a.Max());
            Console.ReadKey();
Привыкайте, ребятки, к хорошему. )
I'm learning to live...

Последний раз редактировалось Stilet; 16.06.2013 в 17:23.
Stilet вне форума Ответить с цитированием
Старый 16.06.2013, 17:23   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Nickolai47

Код работает но надо как то упростить слишком уж много действий лишних...

Код:
var s = "1при324мер34_1";
var max = Regex.Matches(s, @"(\d+)").OfType<Match>().Select(p => int.Parse(p.Value)).Max();

Console.WriteLine(max);
Rififi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
строка string и строка char Petyu Общие вопросы C/C++ 3 16.05.2013 00:26
строка vitik Паскаль, Turbo Pascal, PascalABC.NET 5 07.01.2011 16:33
строка Bek-Z Помощь студентам 1 12.12.2010 20:09
Строка Shift_sk Помощь студентам 4 23.11.2010 18:13
Строка состаяния или загрузачная строка Sergeu Мультимедиа в Delphi 8 27.08.2008 10:32