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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2015, 23:48   #1
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию Алгоритм. Нахождение предложения в строке.

Доброго времени суток, форумчане. Имеется строка вида:
Цитата:
Не любой оторванный листочек пустит корни в воде. &&& вы хотите расширить свой домашний цветник без финансовых затрат или преподнести &&& Затем поместить корни в нагретую до 50-55o С воду, добавив в нее чуть-чуть марганцовки, но можно и без нее. Очень часто в магазинах продают кактусы, которые в цветах круглый год, так как эти &&&
Необходимо выудить из этой строки все законченные предложения. Уточню, на выходе мы должны получить:

Цитата:
Не любой оторванный листочек пустит корни в воде. Затем поместить корни в нагретую до 50-55o С воду, добавив в нее чуть-чуть марганцовки, но можно и без нее.

Т.е незаконченные предложения заканчиваются на " &&& ". Набросал немного говнокода (помидорами не кидайте), но не могу понять почему он не работает. Помогите решить поставленную задачу. Мой код:
Код:
var snipp = "Не любой оторванный листочек пустит корни в воде. &&& вы хотите расширить свой домашний цветник без финансовых
 затрат или преподнести &&& Затем поместить корни в нагретую до 50-55o С воду, добавив в нее чуть-чуть марганцовки, но можно 
и без нее. Очень часто в магазинах продают кактусы, которые в цветах круглый год, так как эти &&&";
            bool stat = false;
            List<char> k = new List<char>();
            int index = 0;

            foreach (char j in snipp)
            {
                if (!stat)
                {
                    if (char.IsUpper(j))
                    {
                        stat = true;
                        k.Add(j);
                    }
                    else
                    {
                        index++;
                        continue;
                    }
                }
                else
                {
                    if (snipp[index] != ' ' && snipp[index + 1] != '&')
                    {
                        if (snipp[index] == '.' || snipp[index] == '!' || snipp[index] == '?')
                        {
                            k.Add(j);
                            stat = false;
                            break;
                        }
                        else
                        {
                            k.Add(j);
                        }
                    }
                    else
                    {
                        if ((index + 5) < snipp.Count())
                        {
                            index += 5;
                            stat = false;
                            k.Clear();
                        }
                        else
                        {
                            stat = false;
                            k.Clear();
                        }
                    }
                }
                index++;
            }
            Console.WriteLine(k.ToArray());
            Console.ReadKey();

Последний раз редактировалось Stilet; 15.10.2015 в 08:42.
FULEREN вне форума Ответить с цитированием
Старый 15.10.2015, 08:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вопрос в лоб: Регулярки разрешены?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.10.2015, 08:57   #3
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вопрос в лоб: Регулярки разрешены?
Да, безусловно. Просто я не совсем представляю себе регулярку, которую можно под это составить, по этому даже разбираться не стал.
FULEREN вне форума Ответить с цитированием
Старый 15.10.2015, 10:15   #4
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

регулярки (javascript):

>> var snipp = "Не любой оторванный листочек пустит корни в воде. &&& вы хотите расширить свой домашний цветник без финансовых затрат или преподнести &&& Затем поместить корни в нагретую до 50-55o С воду, добавив в нее чуть-чуть марганцовки, но можно и без нее. Очень часто в магазинах продают кактусы, которые в цветах круглый год, так как эти &&&";
>> snipp.match(/[A-ZА-ЯЁ][^&]+\./g)
<< ["Не любой оторванный листочек пустит корни в воде.", "Затем поместить корни в нагретую до 50-55o С воду, добавив в нее чуть-чуть марганцовки, но можно и без нее."]
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение символа в строке и перенос sariman Общие вопросы Delphi 7 25.07.2012 19:48
нахождение слова в строке saurons Общие вопросы C/C++ 7 01.06.2011 01:35
Нахождение слова в строке Bujhm127 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 08.04.2011 13:18
Нахождение нечислового значения в строке Keetotko Помощь студентам 3 11.11.2010 16:57
Нахождение серий символов в строке ampolez Общие вопросы C/C++ 2 19.12.2008 22:20