|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
удалить из строки буквы
Сам пробовал написать программу ничего не получалось,объясняли(скажем так теоретически понял ,а практически не очень ) .
Может тут, кто поможет написать программку. Условие задачи.
Нужно удалить из строки буквы 'b','c','d'.ЗАРАНЕЕ СПАСИБО! |
#2
|
||||
|
||||
Код:
StringReplace(строка, что_убрать, '', [rfReplaceAll]); |
#3
|
||||
|
||||
Ну а что не получилось то?
Код:
var s: string; i: integer; begin ... for i:=1 to length(s) do if(s[i] = 'b') or (s[i] = 'c') or (s[i] = 'd') then Delete(S, i, 1); ShowMessage(S); Или как написали выше (только функция stringReplace не паскалевская, поэтому думаю она не годиться, но всеже: Код:
var s:string; begin ... StringReplace(S, 'b', '', [rfReplaceAll]); StringReplace(S, 'c', '', [rfReplaceAll]); StringReplace(S, 'd', '', [rfReplaceAll]); ShowMessage(S); Помогаю за Спасибо Последний раз редактировалось v1s2222, 06.12.2010 в 15:52. |
#4
|
||||
|
||||
Не получалось,то что в место одной буквы у меня удолялось все слово((((
|
#5
|
||||
|
||||
В цикле пробегая по каждому сиволу и удаляй один символ: Delete(S, i, 1);
Код выше посмотри, там все правильно. Помогаю за Спасибо |
#6
|
|||
|
|||
можно и вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject); var st,st1:string; i:integer; begin st:=edit1.Text; for i:=1 to length(st) do begin if ( (st[i]='a') or (st[i]='b') or (st[i]='d') ) then begin st1:=copy(st,0,i-1); st:=st1+copy(st,i+1,length(st)); st1:=''; end; label1.Caption:=st; end; end; Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#7
|
||||
|
||||
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var s: String; begin s:='Welcome to the MSDN Library, an essential source of information for developers using Microsoft® tools, products, technologies and services. The MSDN Library includes how-to and reference documentation, sample code, technical articles, and more.'; Memo1.Text:=s; s:=StringReplace(s, 'b', '', [rfReplaceAll, rfIgnoreCase]); s:=StringReplace(s, 'c', '', [rfReplaceAll, rfIgnoreCase]); s:=StringReplace(s, 'd', '', [rfReplaceAll, rfIgnoreCase]); Memo1.Lines.Add('--'); Memo1.Lines.Add(s); end; end. Пишу программы за еду. __________________ |
#8
|
||||
|
||||
Еще один вопрос!!Почему букву 'c' прога не удаляет??
Код:
program Project1; {$APPTYPE CONSOLE} var str: string; i: integer; begin writeln('vedite stroku'); Readln(str); begin for i:=1 to length(str) do if(str[i] = 'b') or (str[i] = 'c') or (str[i] = 'd') then Delete(Str, i, 1); end; begin writeln(str); readln; end; End. Делаю тест,получается вот,что Код:
Vedite sroku abcdfabcg acfacg |
#9
|
||||
|
||||
а ты уверен что "С" и "C" одинаковые? т.е. рус и анг раскладка
Последний раз редактировалось Admin, Сегодня в 10:32. |
#10
|
|||
|
|||
Буква "с" у вас в условии скорее всего русская!
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#11
|
||||
|
||||
Нет,все правильно!
Всё равно тупит( |
#12
|
||||
|
||||
потому что она идет после удаляемой буквы b и выпадает из обработки после удаления b
Пишу программы за еду. __________________ |
#13
|
||||
|
||||
Спасибо всем за помощь!!!!
|
#14
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#15
|
||||
|
||||
так по-моему лучше
Код:
var str:string; i,dlina:byte; begin i:=1; str:='sdfcdbdfghgrtasdcvbfgdbt'; dlina:=length(str); while i<=dlina do begin if(str[i] = 'b') or (str[i] = 'c') or (str[i] = 'd') then begin Delete(Str, i, 1); dec(i); //i:=i-1; dec(dlina); //dlina:=dlina-1; end; inc(i); //i:=i+1; end; Последний раз редактировалось Admin, Сегодня в 10:32. |