Есть текст в нем есть слова которые начинаються на слоги "Сверх" надо вытащить все эти слова. что бы получился список с такими словами. Что-то пробую пробую, получилось только методом выделения текста и копирования. memo1.seltext. Это очень медленно. Помогите народ. дайте пример? Надо на делфи
Очень просто Кидаешь на форму 2 memo в memo1 кидаешь свои слова на кнопку кидаешь При нажатие на кнопку слова с "Сверх" с memo1 будут скопированы в memo2
090808, твой код копирует строки. а надо слова. Была сверх новая звезда блабла. сверхновый блабла. привет сверху блабла надо что бы вытащились слова: сверх, сверхновый, сверху зы все слова одинаковой длины! в примере просто разная длина. длина слов: 8 символов
Code: var Find,s:string; i:integer; begin find:='Сверх'; For i:=0 to Memo1.Lines.Count-1 do If Pos(FIND, Memo1.Lines.Text)<>0 Then Begin Memo1.SetFocus(); Memo1.SelStart:=Pos(FIND,Memo1.Lines.Text)-1; Memo1.SelLength:=Length(FIND)+3; Memo2.Lines.Add(Memo1.SelText); Memo1.text:=StringReplace(memo1.Text,Memo1.SelText,'',[rfReplaceAll]);
Code: procedure TForm1.btn1Click(Sender: TObject); var reg1: tregexpr; begin reg1:= tregexpr.create; reg1.Expression:='(сверх.*?) '; if reg1.Exec(mmo1.Text) then begin repeat mmo2.Lines.Add(reg1.Match[1]); until not reg1.ExecNext; end; end; Используя регулярки. Легко и быстро. Текст берется из mmo1.text и вставляется в mmo2.text
090808, я же в топике писал, что чкркз сел текст сам сделал. но очень долго работает SultanOFF, ошибка: [Error] Unit1.pas(29): Undeclared identifier: 'tregexpr'
все просто PHP: while(sText.Pos("сверх")) { sText.Delete(1, sText.Pos("сверх") + 5 - 1); sWord = sText; sWord.SetLength(sWord.Pos(" ") - 1); Memo1->Lines->Add("сверх" + sWord); }
ты пропиши в uses regexpr; предварительно скачав модуль регулярок и положив в папку с проектом. Модуль можешь скачать отсюда
SultanOFF, спасибо. так и сделал. но как решить вопрос то что после слова может быть не токо пробел? ище точки цифры и тд?)
... PHP: for(int i = 1; i <= sWord.Length(); ++i) { if(sWord[i] < 'а' || sWord[i] > 'я') { sWord.SetLength(i - 1); break; } }