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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2010, 16:10   #1
eduard17
Новичок
Джуниор
 
Регистрация: 19.02.2010
Сообщений: 2
По умолчанию удалять лишние пробелы из строки

нужно сделать программу которая будет удалять лишние пробелы из строки.
просто удалить пробелы из строки у меня получился такой код
While pos(' ',s)< > 0 do Delete(s,pos(' ',s),1);

Но как удалить только лишние?
eduard17 вне форума Ответить с цитированием
Старый 19.02.2010, 16:25   #2
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Код:
while pos('  '{два пробела},s)<>0 do delete(s,pos('  '{два пробела},s),1);
Google2010 вне форума Ответить с цитированием
Старый 19.02.2010, 19:16   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Функция оставляющая один заданный символ (удаляет повторения) :
Код:
function Q_KeepOneChar(const S: string; Ch: Char): string;
asm
        PUSH    ESI
        MOV     ESI,ECX
        TEST    EAX,EAX
        JE      @@qt
        MOV     ECX,[EAX-4]
        TEST    ECX,ECX
        JE      @@qt
        PUSH    EBX
        PUSH    EDI
        MOV     EBX,EAX
        MOV     EDI,EDX
        XOR     EDX,EDX
        MOV     EAX,ESI
        CALL    System.@LStrFromPCharLen
        MOV     EDX,EDI
        MOV     ECX,[EBX-4]
        MOV     EDI,[ESI]
@@lp:   MOV     AL,BYTE PTR [EBX]
        MOV     BYTE PTR [EDI],AL
        INC     EBX
        INC     EDI
        CMP     AL,DL
        JE      @@me
@@nx:   DEC     ECX
        JNE     @@lp
@@wq:   MOV     EAX,[ESI]
        MOV     BYTE PTR [EDI],0
        SUB     EDI,EAX
        MOV     [EAX-4],EDI
        POP     EDI
        POP     EBX
        POP     ESI
        RET
@@me:   CMP     DL,BYTE PTR [EBX]
        JNE     @@nx
        INC     EBX
        DEC     ECX
        JNE     @@me
        JMP     @@wq
@@qt:   MOV     EAX,ESI
        CALL    System.@LStrClr
        POP     ESI
end;
© Андрей Дрязгов, Сергей Щербаков

Используем :
Код:
Q_KeepOneChar(s, ' ');// удаляем все повторяющиеся пробелы оставляя по одному
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 19.02.2010, 19:53   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

и зачем тут асм ?=)
NiCola999 вне форума Ответить с цитированием
Старый 19.02.2010, 20:42   #5
eduard17
Новичок
Джуниор
 
Регистрация: 19.02.2010
Сообщений: 2
По умолчанию

Спасибо большое
eduard17 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу delphi MASIK Общие вопросы Delphi 7 22.12.2010 18:23
Убрать лишние пробелы из строки SoftKoc Общие вопросы Delphi 3 03.12.2009 23:54
Удалить лишние пробелы [C++] StudeHt Помощь студентам 2 20.05.2009 23:12
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу c++ DimaG Общие вопросы C/C++ 1 01.11.2007 21:50