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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 16:43   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Удалить из строки все символы типа #10 #9 и т.д.

Как удалить из строки все символы типа #10 #9 и т.д.

P.s. Enter это ведь #10#13?

Последний раз редактировалось TwiX; 01.12.2009 в 16:47.
TwiX вне форума Ответить с цитированием
Старый 01.12.2009, 16:46   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
i:=1;
while i<=Length(s) do 
 if s[i] in [<нужные символы>]{еще можно s[i]<#10} then Delete(s,i,1) else inc(i);
исправил код
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 01.12.2009 в 16:52.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2009, 16:48   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

ENTER - 13. 10 - это перевод на другую строку.
Вотъ http://www.programmersforum.ru/showp...69&postcount=3
Если не понятно сокращение типа CR в вики есть статья про ASCII
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 01.12.2009, 17:15   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Пепел Феникса, перебор это слишком тупо. Я думал, может есть функция типа trim =\

Добавлено:
Особенно, если это html в 120 000 знаков xD
TwiX вне форума Ответить с цитированием
Старый 01.12.2009, 17:18   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Пепел Феникса, перебор это слишком тупо. Я думал, может есть функция типа trim =\
а они по твоему не на переборе работают?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2009, 17:24   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
перебор это слишком тупо.
Все равно перебор будет.
Кстати в данном случа перебор - найоптимальнейше, ибо позволяет указать много условий отсеивания символа. В данном случае это самый быстрый способ.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2009, 17:25   #7
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Пепел Феникса, не на таком "тупом" =)

Добавлено:
1 вопрос снят...

Последний раз редактировалось TwiX; 01.12.2009 в 17:31.
TwiX вне форума Ответить с цитированием
Старый 01.12.2009, 17:28   #8
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
Пепел Феникса, не на таком "тупом" =)
а вы загляните в ее тельце... "гениальнейшее" решение
Код:
function Trim(const S: string): string;
var
  I, L: Integer;
begin
  L := Length(S);
  I := 1;
  while (I <= L) and (S[I] <= ' ') do Inc(I);
  if I > L then Result := '' else
  begin
    while S[L] <= ' ' do Dec(L);
    Result := Copy(S, I, L - I + 1);
  end;
end;
Цитата:
Сообщение от TwiX Посмотреть сообщение
Alex Cones, почему тогда, если в string вставить #10, а потом вывести это, например, в мемо, то перевода никакого не будет?
А как вы вставляете?
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 01.12.2009, 17:52   #9
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

quit, по поводу #10 уже разобрался, а по поводу trim'a - там перебор оптимальный вариант.

Вот, например, быстрее чем перебор будет работать:
Код:
function trimExt(var s:string; example:Char);
var
  i:Integer;
begin
  i:=Pos(example, s);
  while i>0 do
  begin
    Delete(s, i, 1);
    i:=Pos(example, s);
  end;
    i:=Pos(example, s);
end;
Как сделать, что б в неё(даже не в неё, а в любую функцию) несколько символов можно было передавать?
TwiX вне форума Ответить с цитированием
Старый 01.12.2009, 18:54   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Просто поменяйте, например на ShortString. Все функи и процы в данном коде работают не только с чарами.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить все строки в Excel содержащие.. Dux Microsoft Office Excel 15 11.09.2009 04:41
удалить в строке все одинаковые символы Михаил70 Помощь студентам 5 09.09.2009 18:35
как удалить лишнеие символы в строке, и ограничить длину строки MixanMM Общие вопросы Delphi 3 11.06.2009 07:03
как из строки ТМемо удалить ненужные символы MixanMM Общие вопросы Delphi 3 10.06.2009 13:49
Удалить из строки все группы вида abcd Григорийpnz Паскаль, Turbo Pascal, PascalABC.NET 8 18.11.2008 19:40