Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.12.2010, 15:35
Аватар для tv999
tv999 tv999 вне форума
Прохожий
 
Регистрация: 06.12.2010
Сообщения: 8
Репутация: 10
Вопрос удалить из строки буквы

Сам пробовал написать программу ничего не получалось,объясняли(скажем так теоретически понял ,а практически не очень ) .
Может тут, кто поможет написать программку.
Условие задачи.
Нужно удалить из строки буквы 'b','c','d'.
ЗАРАНЕЕ СПАСИБО!
Ответить с цитированием
  #2  
Старый 06.12.2010, 15:48
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Код:
StringReplace(строка, что_убрать, '', [rfReplaceAll]);
Ответить с цитированием
  #3  
Старый 06.12.2010, 15:49
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Ну а что не получилось то?
Код:
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  
Старый 06.12.2010, 15:53
Аватар для tv999
tv999 tv999 вне форума
Прохожий
 
Регистрация: 06.12.2010
Сообщения: 8
Репутация: 10
По умолчанию

Не получалось,то что в место одной буквы у меня удолялось все слово((((
Ответить с цитированием
  #5  
Старый 06.12.2010, 15:55
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

В цикле пробегая по каждому сиволу и удаляй один символ: Delete(S, i, 1);
Код выше посмотри, там все правильно.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #6  
Старый 06.12.2010, 15:56
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

можно и вот так:
Код:
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  
Старый 06.12.2010, 16:01
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
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  
Старый 06.12.2010, 16:19
Аватар для tv999
tv999 tv999 вне форума
Прохожий
 
Регистрация: 06.12.2010
Сообщения: 8
Репутация: 10
По умолчанию

Еще один вопрос!!Почему букву '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
Почему он именно это выдает,а не "afag"??
Ответить с цитированием
  #9  
Старый 06.12.2010, 16:27
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

а ты уверен что "С" и "C" одинаковые? т.е. рус и анг раскладка
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #10  
Старый 06.12.2010, 16:27
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Буква "с" у вас в условии скорее всего русская!
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #11  
Старый 06.12.2010, 16:31
Аватар для tv999
tv999 tv999 вне форума
Прохожий
 
Регистрация: 06.12.2010
Сообщения: 8
Репутация: 10
По умолчанию

Нет,все правильно!
Всё равно тупит(
Ответить с цитированием
  #12  
Старый 06.12.2010, 16:32
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

потому что она идет после удаляемой буквы b и выпадает из обработки после удаления b
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #13  
Старый 06.12.2010, 16:34
Аватар для tv999
tv999 tv999 вне форума
Прохожий
 
Регистрация: 06.12.2010
Сообщения: 8
Репутация: 10
По умолчанию

Спасибо всем за помощь!!!!
Ответить с цитированием
  #14  
Старый 06.12.2010, 16:39
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от tv999
Спасибо всем за помощь!!!!
да не правильный у тебя код в 8 посту!!!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #15  
Старый 06.12.2010, 16:42
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

так по-моему лучше
Код:
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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter