Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841

Удаление подстроки по маске

17.02.2015, 01:34. Показов 1836. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Есть вот такая строка
C++
1
"Трампампм #3F4A00трам#парам пам#00FF03."
Нужно по маске #000000-#FFFFFF удалить все вхождения подстроки.
Просто перебирать все возможные варианты от 00000 до FFFFFF не особо хочется, вдобавок если текст большой то можно хорошо подгрузить систему. А больше и вариантов не могу придумать. Может у кого есть мысли по этому поводу?
В итоге должна получиться строка "Трампампм трам#парам пам."
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2015, 01:34
Ответы с готовыми решениями:

Удаление файлов по маске
Вот есть код который { AnsiString DirPath = Edit1->Text; TStringList* ToDel = new TStringList(); ...

Поиск подстроки в строке по маске
Здравствуйте. Как можно найти все вхождения подстроки в строке по маске? я брал за основу код из библиотеки MSDN по работе с LINQ, для...

Удаление файлов по маске
День добрый. Помогите с батником: Удаление файлов по маске. Маска и путь задаются в батнике,так же нужен запрос на удаление В конце...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,913
Записей в блоге: 12
17.02.2015, 09:44
Лучший ответ Сообщение было отмечено DrSMERTb как решение

Решение

Напиши регулярку, которая будет искать нужные сочетания. Вот такую, например: #[0-9A-F]{6}

А потом запусти замену найденного на пустую строку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "RegExpr.hpp"
 
// ...
 
    std::auto_ptr<TRegExpr> Reg(new TRegExpr);
    Reg->InputString = Memo3->Text;
    Reg->ModifierM = true;
    Reg->Expression = "#[0-9A-F]{6}";
    Reg->Compile();
 
    if (Reg->Exec(Reg->InputString))
        Memo3->Text = Reg->Replace(Reg->InputString, "", false);
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
17.02.2015, 10:22
Безусловно регулярки лучше.

Но, исходя из примера, можно так вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <StrUtils.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
String str = "Трампампм #3F4A00трам#парам пам#00FF03.",
       resStr = "";
 
String delim = "0123456789ABCDEF";
String symb = "#";
for( unsigned int i = str.Length(); i>0; i-- )
  {
  if( str.IsDelimiter( delim, i ) )
    {
    if( symb == str[i-1] )
      i--;
    }
  else
    resStr += str[i];
  }
 
resStr = ReverseString( resStr );
this->Caption = resStr;
}
//---------------------------------------------------------------------------
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,913
Записей в блоге: 12
17.02.2015, 10:25
Ну, и попробуй запустить на строке:
C++
1
String str = "Трампампм #3трам#парам пам#00FF03."
0
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
17.02.2015, 10:29  [ТС]
Списиб всем сделал вот так
C++
1
2
3
4
#include <System.RegularExpressions.hpp>
....
TRegEx Regular("#([0-9A-F]){6}"); 
    s =Rerelar.Replace(s,"");
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
17.02.2015, 10:31
volvo, а мож не может быть таких строк.
0
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
17.02.2015, 10:41  [ТС]
Хотя рано обрадывался, он оказался чувствительным к литеру поэтому пришлось повторить
C++
1
2
3
4
TRegEx Regular("#([0-9A-F]){6}"); 
    s =Rerelar.Replace(s,"");
Regular("#([0-9a-f]){6}"); 
    s =Rerelar.Replace(s,"");
Добавлено через 47 секунд
А может можно что то типа "или" воткнуть?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,913
Записей в блоге: 12
17.02.2015, 10:54
C++
1
TRegEx Regular("#([0-9A-Fa-f]){6}");
1
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
17.02.2015, 10:55  [ТС]
volvo, во вот так прям замечательно получилось)
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
17.02.2015, 11:02
DrSMERTb, "#([0-9a-fA-F]){6}" - не?
И как на счет сперва строку каким-нибудь UpperCase-ом обработать?
0
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
17.02.2015, 11:05  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
И как на счет сперва строку каким-нибудь UpperCase-ом обработать?
помнится когда им пользовался (давно было) он мне всю строку переделывал в верхний регистр, а мне этого не надо. Это ведь цвет зашифрован в HEX а дальше нормальный текст.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,913
Записей в блоге: 12
17.02.2015, 14:49
DrSMERTb, отключи чувствительность к регистру:
C++
1
s = TRegEx::Replace(s, "#([0-9A-F]){6}", "", TRegExOptions() << roIgnoreCase);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2015, 14:49
Помогаю со студенческими работами здесь

Удаление файлов по маске
Скажите как это.какой код писать

Удаление файлов по маске
Доброго времени суток уважаемые форумчане. Задача простая как две копейки, но не могу реализовать ее на PowerShell т.к. первый раз...

Удаление файлов по маске
ищу софтину, которая позволит удалять файлы по маске (особенно если у них разное имя). например оставлять только за 5 число и 20-е. не...

Удаление строк по маске
Добрый день уважаемые программисты, появился вопрос помогите пожалуйста разобраться. Работа со строками, есть допустмим для примера...

Удаление строк по маске
private void Remove_Click(object sender, EventArgs e) { LogFile.Items.Clear(); string Filter = {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru