Вытащить из текста все слова ничинающиеся на Сверх

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by bootsektor, 8 Jun 2010.

  1. bootsektor

    bootsektor New Member

    Joined:
    2 Jan 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Есть текст в нем есть слова которые начинаються на слоги "Сверх"
    надо вытащить все эти слова. что бы получился список с такими словами.

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

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    Очень просто

    Кидаешь на форму 2 memo в memo1 кидаешь свои слова на кнопку кидаешь

    При нажатие на кнопку слова с "Сверх" с memo1 будут скопированы в memo2
     
    #2 090808, 8 Jun 2010
    Last edited: 8 Jun 2010
  3. bootsektor

    bootsektor New Member

    Joined:
    2 Jan 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    090808, твой код копирует строки.
    а надо слова.

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


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

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

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    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]);
     
  5. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    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
     
  6. bootsektor

    bootsektor New Member

    Joined:
    2 Jan 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    090808, я же в топике писал, что чкркз сел текст сам сделал. но очень долго работает
    SultanOFF, ошибка: [Error] Unit1.pas(29): Undeclared identifier: 'tregexpr'
     
  7. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    все просто
    PHP:
    while(sText.Pos("сверх"))
    {
        
    sText.Delete(1sText.Pos("сверх") + 1);
        
    sWord sText;
        
    sWord.SetLength(sWord.Pos(" ") - 1);
        
    Memo1->Lines->Add("сверх" sWord);
    }
     
  8. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    ты пропиши в uses regexpr; предварительно скачав модуль регулярок и положив в папку с проектом. Модуль можешь скачать отсюда
     
    3 people like this.
  9. bootsektor

    bootsektor New Member

    Joined:
    2 Jan 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    SultanOFF, спасибо. так и сделал. но как решить вопрос то что после слова может быть не токо пробел? ище точки цифры и тд?)
     
  10. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    ...
    PHP:
    for(int i 1<= sWord.Length(); ++i)
    {
        if(
    sWord[i] < 'а' || sWord[i] > 'я')
        {
            
    sWord.SetLength(1);
            break;
        }
    }
     
  11. bootsektor

    bootsektor New Member

    Joined:
    2 Jan 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Всем спасибо вообщем вроде сделал работает.
    M_script_, надо было на делфи)
     
  12. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    VCL один, только синтаксис немного изменить нужно.