delphi заменить рандом символ

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by mazaxaka, 24 Oct 2013.

  1. mazaxaka

    mazaxaka Elder - Старейшина

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    вообщем такая проблема
    есть строка ,например
    Code:
    примет как дела?
    
    нужно заменить рандомно один из пробелов другим текстом

    вопрос как ето сделать
     
  2. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    del
    сорри, не прочитал текст
     
  3. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    Reputations:
    2
    можно вот так, в юсес math не забудь добавить

    PHP:
    function replace_rnd_space(strstr2:string):string;
    var
     
    s,s2:string;
     
    pos:integer;
    begin
     s
    :=str;
     
    randomize;
     
    pos:=randomrange(1,length(s)-8);
     
    s2:=StringReplace(copy(spos12),' 'str2, [rfIgnoreCase]);
     
    delete(spos12);
     
    insert(s2spos);
     
    result:=s;
    end;

    procedure TForm1.Button1Click(SenderTObject);
    begin
    showmessage
    (replace_rnd_space('привет как дела привет как дела''123'));
    end;
     
  4. qw1mb1

    qw1mb1 Member

    Joined:
    8 Feb 2013
    Messages:
    113
    Likes Received:
    16
    Reputations:
    8
    1n0y опередил меня, но все же выложу и свой код.
    Code:
    function randomReplace(des : char; replace, source : string) : string;
    var strArr : array of integer;
        i, k : integer;
    begin
      if pos(des, source)=0 then
      begin
        result := source;
        exit;
      end;
       for i := 1 to length(source) do
         if source[i] = des then
         begin
           setLength(strArr, length(strArr)+1);
           strArr[length(strArr)-1] := i;
         end;
       randomize();
       k := strArr[random(length(strArr))];
       result := '';
       for i := 1 to length(source) do
       if i=k then
          result := result + replace
       else
          result := result + source[i];
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit1.Text := randomReplace(' ', ' какая-то строка', Edit1.Text);
    end;