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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2015, 19:29   #1
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию Удаление подстроки из строки.

Доброго времени суток форумчане. Как можно удалить подстроку из строки, ограниченную словами (не символами). Заранее благодарен за любой ответ.
FULEREN вне форума Ответить с цитированием
Старый 22.02.2015, 19:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

1) Найти первое ограничивающее слово
2) Скопировать все до этого слова включая его самого в получатель
3) Удалить все до этого слова включая его самого
4) Найти второе ограничивающее слово
6) Скопировать все начиная с этого слова до конца в конец получателя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2015, 20:14   #3
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию

А нет готовых решений, библиотечная функция которая мне подойдет? Что то типа регулярок или вырезание по маске?
FULEREN вне форума Ответить с цитированием
Старый 22.02.2015, 20:25   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Есть )
Именно регулярки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2015, 21:39   #5
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию

Прошу прощения, никогда не имел дела с регулярками в C++, не могли бы вы подсказать, как использовать regex в моем примере. Только без boost. Если вас не затруднит, конечно.
FULEREN вне форума Ответить с цитированием
Старый 22.02.2015, 21:55   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Затруднит. Я не сишник. Однако поисковиком пользоваться умею:
http://www.regular-expressions.info/stdregex.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2015, 22:01   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Я могу попытаться помочь, но я не понял задание. Приведите, пожалуйста, пример входных данных и что должно получиться после обработки
8Observer8 вне форума Ответить с цитированием
Старый 22.02.2015, 22:10   #8
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Я могу попытаться помочь, но я не понял задание. Приведите, пожалуйста, пример входных данных и что должно получиться после обработки
Имеется html код. На входе:

Код HTML:
<p class="article_header_story_title"><time class="article_header_date" itemprop="dateCreated" datetime="2015-02-22T18:19"><span class="article_header_time">18:19</span>22.02.2015</time><span class="article_header_item_views">356</span>
Необходимо удалить тег <time> включая все содержимое.

т.е должно получиться:
Код HTML:
<p class="article_header_story_title"><span class="article_header_item_views">356</span>

Последний раз редактировалось Stilet; 22.02.2015 в 22:28.
FULEREN вне форума Ответить с цитированием
Старый 22.02.2015, 23:07   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Промежуточно этот код выплёвывает, то что вы хотите удалить:

Output:
Цитата:
Hello=<time class="article_header_date" itemprop="dateCreated" datetime="2015-02
-22T18:19"><span class="article_header_time">18:19</span>22.02.2015</time>
Код:
#include <iostream>
#include <regex>
#include <string>

int main ()
{
    std::string input = "<p class=\"article_header_story_title\"><time class=\"article_header_date\" itemprop=\"dateCreated\" datetime=\"2015-02-22T18:19\"><span class=\"article_header_time\">18:19</span>22.02.2015</time><span class=\"article_header_item_views\">356</span>";

    std::regex r("(<time.*</time>)");
    const std::string format( "Hello=$1" );
    std::cout << std::regex_replace( input, r, format, std::regex_constants::format_no_copy ) << std::endl;

    return 0;
}
Сейчас ещё подумаю. Голова уже не варит под конец дня...
8Observer8 вне форума Ответить с цитированием
Старый 22.02.2015, 23:18   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Я в предыдущем варианте сделал задание в точности до наоборот

Output:
Цитата:
<p class="article_header_story_title"> <span class="article_header_item_views">3 56</span>
Код:
#include <iostream>
#include <regex>
#include <string>

int main ()
{
    std::string input = "<p class=\"article_header_story_title\"><time class=\"article_header_date\" itemprop=\"dateCreated\" datetime=\"2015-02-22T18:19\"><span class=\"article_header_time\">18:19</span>22.02.2015</time><span class=\"article_header_item_views\">356</span>";

    std::regex r("(.*)<time.*</time>(.*)");
    const std::string format( "$1$2" );
    std::cout << std::regex_replace( input, r, format, std::regex_constants::format_no_copy ) << std::endl;

    return 0;
}

Последний раз редактировалось 8Observer8; 22.02.2015 в 23:20.
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление подстроки путем смещения исходной munthrekosh Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 19.06.2013 09:22
Удаление подстроки olegraperos Общие вопросы C/C++ 1 25.10.2011 13:44
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Строки, подстроки Grom48 Помощь студентам 0 30.04.2010 01:19
Удаление подстроки (С) Айдар Помощь студентам 2 02.03.2010 08:22