Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Вниз

Удаление пробела из строки   Найти похожие ветки 

 
smolin   (2004-02-18 14:21) [0]

Подскажите пожалуста какой функцией надо воспользоваться чтобы удалить пробелы из строки.
Например есть строка "aaa bbb ccc", а надо получить "aaabbbccc"


 
MBo   (2004-02-18 14:24) [1]

одной строчкой, но медленно - StringReplace

четыре-пять строчек - цикл for со сдвигом очередного символа на количество найденных пробелов.


 
Amoeba   (2004-02-18 14:30) [2]

Можно использовать готовую оптимизированную ф-ию из бесплатной отечественной библиотеки QStrings

{ Q_DeleteText удаляет из строки S все вхождения подстроки SubStrToDel. Поиск
подстроки ведется без учета регистра символов. Функция возвращает количество
найденных (и удаленных) фрагментов. }

function Q_DeleteText(var S: string; const SubStrToDel: string): Integer;


 
ALEIIIKA   (2004-02-18 14:36) [3]

Удаляет все пробелы в строке S

while Pos(s," ") > 0 do
Delete(s,Pos(s," "),1);


 
Radionov Alexey   (2004-02-18 14:54) [4]

>MBo © (18.02.04 14:24)
де жа вю [3]? :))


 
Loneron   (2004-02-18 15:01) [5]

Поддерживаю ALEIIIKA © (18.02.04 14:36)
Только незачем Pos 2 раза вызывать


 
Radionov Alexey   (2004-02-18 15:07) [6]

>Loneron © (18.02.04 15:01) [5]
Позвольте узнать почему поддерживаете?


 
Loneron   (2004-02-18 15:11) [7]

>Radionov Alexey © (18.02.04 15:07)
поддерживаю, потому что сам бы написал этом духе. Позвольте узнать, а вам чем не нравится?


 
Radionov Alexey   (2004-02-18 15:17) [8]

>Loneron © (18.02.04 15:11) [7]
Просто потому, что время работы при такой реализации будет пропорционально квадрату длины строки.

(Pos каждый раз начинает просмотр с начала строки - получаем неявный вложенный цикл, когда достаточно одного всего цикла)


 
Loneron   (2004-02-18 15:23) [9]

for i := Length(S) - 1 downto 0 do
if S[i] = " " then Delete(S, i, 1);

на этом закончим? :)


 
Radionov Alexey   (2004-02-18 15:24) [10]

>Loneron © (18.02.04 15:23) [9]
Не-а :)))
Все равно есть квадратичная зависимость (Delete вызывает ее)
;-)


 
Loneron   (2004-02-18 15:29) [11]

Ладно, уговорил
Buf := "";
for i := 0 to Length(S) - 1 do
if S[i] <> " " then Buf := Buf + S[i];
S := Buf;

ну так то хоть пойдет? :)


 
Radionov Alexey   (2004-02-18 15:34) [12]

>Loneron © (18.02.04 15:29) [11]
Конкатенация строк - думаешь, легче будет?

Я в таких случаях завожу два индекса (вернее, две индексных переменных) для одной строки. Один для чтения, другой для записи. Первый за каждый шаг увеличивается на 1. Второй увеличивается, если только попадается "правильный" символ. Таким образом все творится пределах одной строки и за один проход. В конце только нужно подкорректировать длину строки по второму индексу.


 
ALEIIIKA   (2004-02-18 15:35) [13]

Главно довести идею, оптимизация потом пойдет исходя из найденного текущего решения. Я и не говорил, что это оптимальный вариант.


 
Loneron   (2004-02-18 15:46) [14]

>Radionov Alexey © (18.02.04 15:34)
Вах, шайтан! :))


 
Fay   (2004-02-18 15:54) [15]

2Loneron © (18.02.04 15:46) [14]
попробуйте проделать это со строкой длиной 100000.


 
Amoeba   (2004-02-18 15:57) [16]


> со строкой длиной 100000

Не дай Бог, чтобы такая строка ночью приснилась...


 
Romkin   (2004-02-18 16:06) [17]

Так пойдет?

function DeleteAllChars(const S: string; CharToDelete: char): string;
var
i, len: integer;
begin
SetLength(Result, length(S));
len := 0;
for i := 1 to length(S) do
if S[i] <> CharToDelete then
begin
inc(len);
Result[len] := S[i];
end;
SetLength(Result, len);
end;


 
dr Tr0jan   (2004-02-19 10:16) [18]

Смотри http://delphimaster.net/view/1-1077158471/



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.007 c
3-5948
Zilog
2004-02-05 16:39
2004.03.03
как програмно менять порядок столбцов (Fields) в комоненте Query?


14-6195
Домарощинер
2004-02-11 19:52
2004.03.03
Предложите красивый(пошустрее и поменьше) алгоритм


6-6179
Den_py
2003-12-27 07:17
2004.03.03
Socket


1-6063
Centr
2004-02-19 10:00
2004.03.03
TreeNode в TreeView


3-5975
Gumbert-Gumbert
2004-02-04 15:55
2004.03.03
Как сделать таблицу с такими же полями какие возвращает SQL запро





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский