Передвинуть символа в строке

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Ss[x]dD, 30 Mar 2010.

  1. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Кто нибудь сталкивался с таким:

    Вобщем допустим
    в едит1 записано - 1101011110101110. Цель - в едит2 вводим допустим число 5
    и у нас в едит3 должно получиться - 110101111010_1110

    П.С. вместо 5-го символа должен вставиться любой символ/буква, главное чтобы отделить

    П.П.С. чуть не забыл, желательно в дельфи )
     
  2. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    Сейчас накатаю 5 мин)
     
    1 person likes this.
  3. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Если правильно понял, то вот :

    insert('_',edit1.Text,strtoint(Edit2.Text));
     
    1 person likes this.
  4. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    AnsiString s = Edit1->Text;
    int i = Edit2->Text.ToInt();
    Edit3->Text = s.Insert("_", s.Length() - i + 2);
     
    1 person likes this.
  5. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    insert(pos('_')+8); примерно так
     
  6. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    M_script_, просили в дельфи как бы...... :)))
     
  7. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    Интерпретирую M_script
     
  8. CyberHunter

    CyberHunter Active Member

    Joined:
    6 Jan 2010
    Messages:
    601
    Likes Received:
    116
    Reputations:
    37
    На паскале так:
    Code:
    s:=11111
    a:=' '
    insert(a, s, 5)
     
    1 person likes this.
  9. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Berman, сделал как ты сказал

    var s: String;
    var i: Integer
    begin
    edit1.text := strtoint(edit2.text);
    edit3.text := s.Insert("_", s.Length() - i + 2);

    что та ошибку выдает, могешь в кратце описать что делает что? )
     
    #9 Ss[x]dD, 30 Mar 2010
    Last edited: 30 Mar 2010
  10. Refqs

    Refqs Banned

    Joined:
    20 Feb 2010
    Messages:
    139
    Likes Received:
    56
    Reputations:
    27
    Сделай как сказал CyberHunter, он определил.
     
  11. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Не совсем - "желательно в дельфи" ;)
     
  12. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Вот рабочий код :
    Code:
     
    s:=edt1.Text;
     Insert('_',s,StrToInt(edt2.Text));
     edt1.Text:=s;
    
    Вкратце :
    процедура Insert
    1 параметр это то что вставляем.
    2 - куда
    3 - номер символа
     
  13. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Вот код для Delphi
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    t, s, m: String;
    begin
    t:=Edit1.Text;
    s:=Edit2.Text;
    m:=Edit3.Text;
    Insert(s,t,StrToInt(m));
    Edit4.Text:=t;
    end;
    end.
    
    где:
    t-текст
    s-символ
    m-в каком месте
     
    #13 Ss[x]dD, 30 Mar 2010
    Last edited: 30 Mar 2010
  14. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Теперь вопрос №2:
    выше представлен код, в котором только 1 раз можно вставить символ в нужное место, а если предположим, что на месте 4, 6, 7 символа исходного текста вставить допустим тот же "_" символ
     
  15. edge911

    edge911 Active Member

    Joined:
    21 Feb 2009
    Messages:
    105
    Likes Received:
    142
    Reputations:
    15
    тебе вроде написали функцию та o_O
    Insert('_',string,4);
    Insert('_',string,6);
    Insert('_',string,7);
    ---------
    или тебе заменить нужно?
    string[4]:='_';
    string[6]:='_';
    string[7]:='_';
     
    #15 edge911, 31 Mar 2010
    Last edited: 31 Mar 2010
  16. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    в Edit2 вводить цифры через запятую.
    PHP:
    var
      
    j,i:integer;
      
    m,s:string;
      
    Paste:array[1..255of integer;
    begin
    s
    :=Edit1.Text; { запоминаем текст}
    m:=Edit2.text; {запоминает цифры}
    m:=m+','; { добавляем для парсинга}
    for 
    i:=1 to 255 do 
    begin
      Paste
    [i]:=-1
    {
    заполняем массив -1}
      if 
    length(m)>0 then 
    если длина строки с цифрами 0}
      
    begin
        Paste
    [i]:=strtoint(copy(m,1,pos(',',m)-1)); 
    сохраняем значение}
        
    delete(m,1,pos(',',m));
    {
    удаляемчто сохранили }
      
    end;
    end;
    j:=0// Счетчик, который фиксирует баг с заменой
    for i:=1 to 255 do
    begin
      
    if Paste[i]=-1 then break; 
    {
    если число в массиве -1 прекращаем цикл}
      
    insert('_',S,Paste[i]+j);
    {
    вставляем текст}
      
    inc(j); 
    {
    увеличивываем позицию}
    end;
    Edit3.Text:=s;
    {
    выводим результат}
    Если с конца надо
    замени:
    Code:
      insert('_',S,Paste[i]+j);
    на
    Code:
     insert('_',S,length(s)-Paste[i]+j);
     
    #16 JnK, 31 Mar 2010
    Last edited: 31 Mar 2010
    1 person likes this.
  17. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    Что бы не заморачиваться, вот без массива.
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    const
      Delimiter=',';
      Replacement='_';
    var
      I:integer;
      Num,Str:string;
    begin
      Str:=edit1.text;
      Num:=edit2.text+Delimiter;
      I:=0; {новая позиция, с уже добавлеными символами}
      While length(Num)>0 do
      begin
        insert(Replacement,Str,strtoint(copy(Num,1,pos(Delimiter,Num)-1))+I);
        delete(Num,1,pos(Delimiter,Num));
        inc(I);
      end;
      edit1.Text:=Str;
    end;
     
    #17 JnK, 31 Mar 2010
    Last edited: 31 Mar 2010
    1 person likes this.
  18. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    PHP:
    Спасибо всем за ответывыручили  :) 
      +++ 
    нажал  ;) 
     
    #18 Ss[x]dD, 31 Mar 2010
    Last edited: 31 Mar 2010
  19. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Ребята, вот еще вопросик, как сделать чтобы не в начале перемещалось, а в конце?
     
  20. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Что значит "не в начале, а в конце"?