Меню
Настройка windows XP
[38]
тонкости настройки, скрытые возможности
Программирование
[8]
Нюансы, примеры, мои наработки и прочая полезная информация
Защита
[28]
Компьютера, данных, интернет соединений и прочая полезная информация по защите
Обзор новинок
[15]
Новинки ПО и железа
Обмен опытом
[20]
Заработок в сети
[9]
Все виды заработка в сети интернет, обзор, анализ, рекомендации
Распознование
[10]
Все о методах и способах распознавания графической информации. Взлом капчи, методы и способы анализа...
Электронные книги
[4]
По PHP CSS SQL PERL программированию Всё что есть в свободном доступе в интернете на разных ресурсах.
WEB программирование
[9]
Всё о программировании WEB PHP Java PERL HTTP HTML и т.п.
Взлом
[6]
методика взлома, примеры взлома, способы защиты от взлома
Онлайн сервисы
[2]
Полезные сервисы онлайн
Администрирование
[27]
Опыт системного администрирования
Главная » 2011 » Февраль » 25 » Замена в тексте участков строк на заданные строки
23:49
Замена в тексте участков строк на заданные строки
данный класс позволяет заменять в тексте подстроки на другие подстроки... используя список замены из этого текста выбирается первая подходящая строка
реализация класса: seakgReplaceInText.h
#ifndef seakgReplaceInTextH #define seakgReplaceInTextH //----------------------------------------------------------------------------------------- #include <vcl.h> #include <vector.h> //----------------------------------------------------------------------------------------- struct replInOut { AnsiString in; AnsiString out;}; //----------------------------------------------------------------------------------------- typedef void (*nowState)(int progress); class seakgReplaceInText { public: seakgReplaceInText() {}; void setListReplaces(AnsiString list); AnsiString Replace(AnsiString text, bool registr, nowState event); private: void addNewReplace(AnsiString in, AnsiString out); void addRasparsStringAndAdd(AnsiString str); vector <replInOut> listReplaces; nowState ff;}; //----------------------------------------------------------------------------------------- void seakgReplaceInText::addNewReplace(AnsiString in, AnsiString out) { if(in.Length() == 0) return; replInOut new_replace; new_replace.in = in; new_replace.out = out; listReplaces.push_back(new_replace);}; //----------------------------------------------------------------------------------------- void seakgReplaceInText::addRasparsStringAndAdd(AnsiString str) { AnsiString kov = "\""; if((str.Pos("=")==0) || (str.Pos(";")==0) || (str.Pos(kov)==0)) return; AnsiString out = str; AnsiString in = out.SubString(1, out.Pos("=") - 1); out.Delete(1, out.Pos("=") ); out = out.SubString(1, out.Pos(";") - 1 ); //оставляем строчку до ; in.Delete(1, in.Pos(kov)); out.Delete(1, out.Pos(kov) ); for(int i = in.Length(); i > 0; i--) { if( in[i] == kov[1] ) { in = in.SubString(1, i - 1); break; }; }; for(int i = out.Length(); i > 0; i--) { if( out[i] == kov[1] ) { out = out.SubString(1, i - 1); break; }; }; addNewReplace(in, out);}; //----------------------------------------------------------------------------------------- void seakgReplaceInText::setListReplaces(AnsiString list) { listReplaces.clear(); AnsiString str = list; while( str.Pos(";") > 0) { AnsiString str1 = str.SubString(1, str.Pos(";")); str.Delete(1, str.Pos(";")); addRasparsStringAndAdd(str1); };}; //----------------------------------------------------------------------------------------- AnsiString seakgReplaceInText::Replace(AnsiString text, bool registr, nowState event) { int length = text.Length(); AnsiString result; while ( text.Length() != 0 ) { bool b = false; for(unsigned int i = 0; i < listReplaces.size(); i++ ) { int len = listReplaces[i].in.Length(); if( registr == true ) { if ( text.SubString( 1, len ) == listReplaces[i].in ) { text.Delete(1, len ); result = result + listReplaces[i].out; b = true; break; }; } else { if ( text.SubString( 1, len ).UpperCase() ==
listReplaces[i].in.UpperCase() ) { text.Delete(1, len ); result = result + listReplaces[i].out; b = true; break; }; }; }; if( b == false) { result = result + text.SubString( 1, 1 ); text.Delete(1, 1 ); }; event(length - text.Length()); }; return result; }; #endif
пример использования: на форме: TButton *Button1; TMemo *Memo1;TMemo *Memo2;TMemo *Memo3; TCGauge *CGauge1;
TCheckBox *CheckBox1;
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "seakgReplaceInText.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "CGAUGES" #pragma resource "*.dfm" TForm1 *Form1; seakgReplaceInText repl; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){} //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { repl.setListReplaces( Memo3->Lines->Text ); Memo1Change(Sender);} //--------------------------------------------------------------------------- void eventProcess(int i) { Form1->CGauge1->Progress = i;}; //--------------------------------------------------------------------------- void __fastcall TForm1::Memo1Change(TObject *Sender) { Form1->CGauge1->MaxValue = Memo1->Lines->Text.Length(); Memo2->Lines->Text = repl.Replace(Memo1->Lines->Text, CheckBox1->Checked, eventProcess);} //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Button1Click(Sender);} //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox1Click(TObject *Sender) { Memo1Change(Sender);} //---------------------------------------------------------------------------
пример результата работы вводим в мемо1: "Привет, Алексей!" в мемо2: "Privyet, Alyexyey!"
Рекомендую Вам также почитать:
Загрузить, скачать Программирование, Замена в тексте участков строк на заданные строки бесплатно.
Скачать Замена в тексте участков строк на заданные строки бесплатно
Замена в тексте участков строк на заданные строки бесплатно и без регистрации.
При копировании материала указывайте источник
Замена в тексте участков строк на заданные строки download free
Категория: Программирование |
Просмотров: 2948 |
Добавил: Никипольский-Алексей
| Теги: Замена участков строк
| Рейтинг: 5.0 /1
Всего комментариев: 3
Порядок вывода комментариев:
По умолчанию
Сначала новые
Сначала старые
Like It