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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2012, 00:58   #11
Dark~VIN
Пользователь
 
Аватар для Dark~VIN
 
Регистрация: 30.04.2012
Сообщений: 21
Восклицание

Подскажите где что исправить!
Цитата:
Сообщение от Dark~VIN Посмотреть сообщение
Прислал мне ответ по почте некий глубокоуважаемый Reskov с кодом...

Чуть переделал под себя....

Значит сжатие строки работает:
Код:
private void button1_Click(object sender, EventArgs e)
        {            
            if (textBox1.Text != "")
            {
                String stringToMatch = textBox1.Text;
                var p = new Regex(@"(\w)\1+");

                var items = p.Matches(stringToMatch);
                foreach (Match m in items)
                {
                    if (m.Success)
                    {
                        string val = m.Groups[0].Value;
                        int ind = stringToMatch.IndexOf(val) + 1;
                        stringToMatch = stringToMatch.Substring(0, ind) + val.Length + stringToMatch.Substring(ind + val.Length - 1);
                    }
                }
                label2.Text = stringToMatch;
            }
        }
А вот в обратном действии ругается на Enumerable.Repeat(stringToMatch[ind - 1], count - 1)

Пишет:
Error 1 The best overloaded method match for 'string.Join(string, string[])' has some invalid arguments
Error 2 Argument 2: cannot convert from 'System.Collections.Generic.IEnumer able<char>' to 'string[]'


Код:
 private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                String stringToMatch = textBox1.Text;
                var p = new Regex(@"(\d+)");

                var items = p.Matches(stringToMatch);
                foreach (Match m in items)
                {
                    if (m.Success)
                    {
                        string val = m.Groups[0].Value;
                        int ind = stringToMatch.IndexOf(val);
                        int count = int.Parse(val);
                        stringToMatch = stringToMatch.Substring(0, ind) + String.Join("", Enumerable.Repeat(stringToMatch[ind - 1], count - 1)) + stringToMatch.Substring(ind + val.Length);
                    }
                }
                label2.Text = stringToMatch;
            }
Посидел чуть, поковырял код, абстрактно понял суть (не давали нам на изучение такие операторы... Правда я заочник...)
Завтра будет.
Лучше.
Dark~VIN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Архивирование строки Dark~VIN C# (си шарп) 0 30.04.2012 16:41
Архивирование Яр|/||< (^_^) Общие вопросы Delphi 1 16.03.2010 16:28
Архивирование в Delphi BuT@JL Помощь студентам 1 23.03.2009 11:40
архивирование das-xp Общие вопросы Delphi 5 26.06.2007 20:13
архивирование dron-s Общие вопросы Delphi 3 03.05.2007 11:56