ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Вытащить из текста все слова ничинающиеся на Сверх
  #1  
Старый 08.06.2010, 03:47
bootsektor
Новичок
Регистрация: 02.01.2010
Сообщений: 24
Провел на форуме:
64471

Репутация: 0
Unhappy Вытащить из текста все слова ничинающиеся на Сверх

Есть текст в нем есть слова которые начинаються на слоги "Сверх"
надо вытащить все эти слова. что бы получился список с такими словами.

Что-то пробую пробую, получилось только методом выделения текста и копирования. memo1.seltext.
Это очень медленно. Помогите народ. дайте пример?
Надо на делфи
 
Ответить с цитированием

  #2  
Старый 08.06.2010, 04:18
090808
Познающий
Регистрация: 15.03.2009
Сообщений: 87
Провел на форуме:
893829

Репутация: 34
Отправить сообщение для 090808 с помощью ICQ
По умолчанию

Очень просто

Кидаешь на форму 2 memo в memo1 кидаешь свои слова на кнопку кидаешь
Цитата:
var
i:integer;
begin
For i:=0 to memo1.lines.Count-1 do
if pos ('Вверх',memo1.lines[i])<>0 then
memo2.lines.Add(memo1.lines[i])
При нажатие на кнопку слова с "Сверх" с memo1 будут скопированы в memo2

Последний раз редактировалось 090808; 08.06.2010 в 04:20..
 
Ответить с цитированием

  #3  
Старый 08.06.2010, 04:45
bootsektor
Новичок
Регистрация: 02.01.2010
Сообщений: 24
Провел на форуме:
64471

Репутация: 0
По умолчанию

090808, твой код копирует строки.
а надо слова.

Была сверх новая звезда блабла. сверхновый блабла.
привет сверху блабла


надо что бы вытащились слова: сверх, сверхновый, сверху

зы все слова одинаковой длины! в примере просто разная длина. длина слов: 8 символов
 
Ответить с цитированием

  #4  
Старый 08.06.2010, 05:33
090808
Познающий
Регистрация: 15.03.2009
Сообщений: 87
Провел на форуме:
893829

Репутация: 34
Отправить сообщение для 090808 с помощью ICQ
По умолчанию

Код:
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]);
 
Ответить с цитированием

  #5  
Старый 08.06.2010, 08:44
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме:
840493

Репутация: 0
По умолчанию

Код:
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
 
Ответить с цитированием

  #6  
Старый 08.06.2010, 10:34
bootsektor
Новичок
Регистрация: 02.01.2010
Сообщений: 24
Провел на форуме:
64471

Репутация: 0
По умолчанию

090808, я же в топике писал, что чкркз сел текст сам сделал. но очень долго работает
SultanOFF, ошибка: [Error] Unit1.pas(29): Undeclared identifier: 'tregexpr'
 
Ответить с цитированием

  #7  
Старый 08.06.2010, 10:42
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

Репутация: 180
Отправить сообщение для M_script_ с помощью ICQ
По умолчанию

все просто
PHP код:
while(sText.Pos("сверх"))
{
    
sText.Delete(1sText.Pos("сверх") + 1);
    
sWord sText;
    
sWord.SetLength(sWord.Pos(" ") - 1);
    
Memo1->Lines->Add("сверх" sWord);

 
Ответить с цитированием

  #8  
Старый 08.06.2010, 10:49
SultanOFF
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме:
840493

Репутация: 0
По умолчанию

Цитата:
SultanOFF, ошибка: [Error] Unit1.pas(29): Undeclared identifier: 'tregexpr'
ты пропиши в uses regexpr; предварительно скачав модуль регулярок и положив в папку с проектом. Модуль можешь скачать отсюда
 
Ответить с цитированием

  #9  
Старый 08.06.2010, 10:55
bootsektor
Новичок
Регистрация: 02.01.2010
Сообщений: 24
Провел на форуме:
64471

Репутация: 0
По умолчанию

SultanOFF, спасибо. так и сделал. но как решить вопрос то что после слова может быть не токо пробел? ище точки цифры и тд?)
 
Ответить с цитированием

  #10  
Старый 08.06.2010, 11:08
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

Репутация: 180
Отправить сообщение для M_script_ с помощью ICQ
По умолчанию

Цитата:
Сообщение от bootsektor  
SultanOFF, спасибо. так и сделал. но как решить вопрос то что после слова может быть не токо пробел? ище точки цифры и тд?)
...
PHP код:
for(int i 1<= sWord.Length(); ++i)
{
    if(
sWord[i] < 'а' || sWord[i] > 'я')
    {
        
sWord.SetLength(1);
        break;
    }

 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как стать хакером! foreva Болталка 19 12.12.2007 00:12
Установка Windoze глазами линуксоида (100% факты) nerezus Болталка 47 16.10.2005 15:06



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ