Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2013, 23:47   #1
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию Удалить символы из строки

Добрый день.
ВОт у меня такой вопрос:
есть мемо в нем есть русские символы и теги такого типа:<div><h3></div> и.т.д.
Как бы мне их убрать и оставить русские символы?
Delete не поможет т.к. теги могут быть на разных местах всегда.
Заранее спасибо
develsnik вне форума Ответить с цитированием
Старый 09.03.2013, 00:42   #2
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Примерно так:
Код:
for i:=0 to Memo1.Lines.Count-1 do
    for j:=1 to Length(Memo1.Lines.Strings[i]) do
           if Memo1.Lines.Strings[i][j]='<' then
              while Memo1.Lines.Strings[i][j]<>'>' do
                    Delete(Memo1.Lines.Strings[i][j],j,1);
hon вне форума Ответить с цитированием
Старый 09.03.2013, 00:51   #3
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию

на последнею строчку жалуется(
develsnik вне форума Ответить с цитированием
Старый 10.03.2013, 00:43   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

без проверки, исключительно на форуме пишу:
Код:
var s, sRez : string;
  isTag : boolean;
begin
  sRez := '';
  s := Memo1.Text;
  isTag := false;
  for i:=1 to Length(s) do begin
     if s[i]='<' then isTag := true
     else begin
        if not isTag then sRez := sRez + s[i]
        else
           if s[i]='>' then isTag := false;   
     end
  end;
  Memo1.Text := sRez;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.03.2013, 01:13   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

В поздних версиях можно и так.
Код:
var
 c:Char;
 i:Integer;
begin
  for i:=Length(Memo1.Text)-1 downto 0 do
  begin
   for c in ['a'..'z','A'..'Z','<','>','/',';',':','$','&'] do
   begin
    if Memo1.Text[i] = c then
    Memo1.Text[i]:='';
   end;
 End;
end;
Человек_Борща вне форума Ответить с цитированием
Старый 10.03.2013, 15:56   #6
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию

да,огромное спасибо)получилось)
Только вот у меня в результате какие то странные знаки появились и пробелы перед строками.
Исходник в приложении ,кому не лень гляньте пожалуйста ,заранее
спасибо)
Вложения
Тип файла: rar Project1.rar (234.9 Кб, 11 просмотров)
develsnik вне форума Ответить с цитированием
Старый 10.03.2013, 16:03   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и пробелы перед строками
Они не появлялись, они были. Это отступы в самой HTML.
Не знаю что тебе посоветовать, либо регулярные выражения либо в цикле StringReplace().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.03.2013, 16:28   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

зачем?
Код:
for i:=0 to Memo1.lines.count -1 do
begin
  Memo1.lines[i]:=Trim(Memo1.lines[i]); 
end;
P.S. У одного меня BBCode'ы перестали работать?
Человек_Борща вне форума Ответить с цитированием
Старый 10.03.2013, 16:42   #9
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию

если делать stringreplace то уберутся все пробелы,а в самой то новости их надо оставить.

Человек_Борща,да ,опять меня выручили,огромное спасибо)
Но что же делать ,с квадратиками,то есть неизвестными символами?

Последний раз редактировалось develsnik; 10.03.2013 в 16:46.
develsnik вне форума Ответить с цитированием
Старый 10.03.2013, 16:44   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
зачем?
Затем что не только в начале и конце они могут быть
Хотя да trim() как первоначальная припарка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить повторяющиеся символы Heng Помощь студентам 4 11.11.2012 18:04
удалить в тексте символы mego4el Помощь студентам 4 24.12.2010 21:25
Удалить из строки все символы типа #10 #9 и т.д. TwiX Общие вопросы Delphi 10 01.12.2009 19:21
как удалить лишнеие символы в строке, и ограничить длину строки MixanMM Общие вопросы Delphi 3 11.06.2009 07:03
как из строки ТМемо удалить ненужные символы MixanMM Общие вопросы Delphi 3 10.06.2009 13:49