Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Внизхвостовые пробелы Найти похожие ветки
← →
dim2001 © (2006-10-05 13:22) [0]подскажите как отбросить хвостовые пробелы в строке
← →
clickmaker © (2006-10-05 13:26) [1]TrimRight
← →
SerJaNT © (2006-10-06 04:15) [2]Зачем отбрасывать, он же заново отрастет!
← →
SerJaNT © (2006-10-06 04:17) [3]А если серъезно:
procedure LTrim(var s : string);
begin
while ((length(s) > 0) and
(s[1] = #32)) do
Delete(s, 1, 1);
end;
procedure RTrim(var s : string);
begin
while ((length(s) > 0) and
(s[Length(s)] = #32)) do
Delete(s, Length(s), 1);
end;
procedure Trim(var s : string);
begin
LTrim(s);
RTrim(s);
end;
← →
Ketmar © (2006-10-06 05:06) [4]>[3] SerJaNT(c) 6-Oct-2006, 04:17
больше такого не пиши. пусть учать стандартные библиотеки. %-)
← →
Джо © (2006-10-06 05:33) [5]> [4] Ketmar © (06.10.06 05:06)
> >[3] SerJaNT(c) 6-Oct-2006, 04:17
> больше такого не пиши.
Да, да. Нечего крайне неоптимальный и идеологически вредный код в "Начинающих" постить :)
← →
SerJaNT © (2006-10-06 05:42) [6]или просто trim()
← →
Джо © (2006-10-06 05:49) [7]> [6] SerJaNT © (06.10.06 05:42)
> или просто trim()
Trim удаляет не только "хвостовые" пробелы.
← →
SerJaNT © (2006-10-06 06:18) [8]а что еще?
← →
Думкин © (2006-10-06 06:21) [9]> Джо © (06.10.06 05:49) [7]
TrimRight тоже.
В смысле - не только пробелы.
← →
SerJaNT © (2006-10-06 06:21) [10]вот есть еще
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=strchange&id=10066
← →
Думкин © (2006-10-06 06:31) [11]> SerJaNT © (06.10.06 06:18) [8]
Еще и мордовые тоже.
← →
Джо © (2006-10-06 06:48) [12]> [8] SerJaNT © (06.10.06 06:18)
> а что еще?
Вместо того, чтобы задавать поспешные вопросы, лучше бы над своим кодом в [3] задумался и, вдумавшись, исправил его :)
Впрочем, Думкин в [11] уже ответил :)
← →
SergP © (2006-10-06 07:26) [13]
> [0] dim2001 © (05.10.06 13:22)
> подскажите как отбросить хвостовые пробелы в строке
Ну например по такому принципу:
...
i:=length(a);
while a[i]=#32 and i>0 do dec i;
setlength(a,i);
...
← →
Думкин © (2006-10-06 07:35) [14]
> while a[i]=#32 and i>0 do dec i;while (i>0) and (a[i]=#32) do dec i;
← →
Gydvin © (2006-10-06 07:39) [15]А как этот?
function ltrim(s: string): string;
var
i, x: integer;
begin
result := "";
if s = "" then exit;
i := 0;
for x := 1 to length(s) do
if s[x] = " " then inc(i) else break;
if i > 0 then delete(s, 1, i);
result := s;
end;
function rtrim(s: string): string;
var
x, i: integer;
begin
result := "";
if s = "" then exit;
i := 0;
for x := length(s) downto 1 do
if s[x] = " " then inc(i) else break;
if i > 0 then delete(s, x + 1, i);
result := s;
end;
← →
SergP © (2006-10-06 07:44) [16]> [14] Думкин © (06.10.06 07:35)
>
> > while a[i]=#32 and i>0 do dec i;
>
> while (i>0) and (a[i]=#32) do dec i;
знаю... просто писал прямо на форум и не думал о правильно синтаксисе...
кстати там еще одна синтаксическая ошибка есть...
← →
Думкин © (2006-10-06 07:44) [17]> Gydvin © (06.10.06 07:39) [15]
Чем не нравится цикл while и почему счетчик цикла используется за его пределами?
← →
Думкин © (2006-10-06 07:45) [18]> SergP © (06.10.06 07:44) [16]
Да увидел. Но дело не в синтаксисе.
← →
Palladin © (2006-10-06 07:45) [19]
> Gydvin © (06.10.06 07:39) [15]
очень плохо
← →
SergP © (2006-10-06 07:45) [20]> [15] Gydvin © (06.10.06 07:39)
А компилятор не ругается на использование переменной цикла for за пределами цикла?
← →
SergP © (2006-10-06 07:46) [21]> [18] Думкин © (06.10.06 07:45)
> > SergP © (06.10.06 07:44) [16]
>
> Да увидел. Но дело не в синтаксисе.
а.. понял...
← →
Loginov Dmitry © (2006-10-06 07:48) [22]вместо
if s[x] = " "
следует писать
if Ord(s[x]) <= Ord(" ")
о чем и намекали неоднократно
← →
Думкин © (2006-10-06 07:50) [23]> Loginov Dmitry © (06.10.06 07:48) [22]
Почему?
← →
SergP © (2006-10-06 07:54) [24]> [22] Loginov Dmitry © (06.10.06 07:48)
> вместо
> if s[x] = " "
> следует писать
> if Ord(s[x]) <= Ord(" ")
>
> о чем и намекали неоднократно
В [0] речь шла только о пробелах...
← →
Gydvin © (2006-10-06 07:59) [25]
> счетчик цикла используется за его пределами
а по какой причине нельзя использовать?
← →
Loginov Dmitry © (2006-10-06 08:00) [26]SergP © (06.10.06 7:54) [24]
В [0] речь шла только о пробелах
Ну а зачем переписывать стандартные функции Trim с ущемлением функциональности, когда без всякого телепатора ясно, что автор хочет избавиться не только от пробелов, но и от всех незначащих символов, код которых находится до пробела.
← →
Думкин © (2006-10-06 08:04) [27]> когда без всякого телепатора ясно, что автор хочет избавиться
> не только от пробелов,
Это уже филлософия. Сказано про пробелы - значит пробелы.
> Gydvin © (06.10.06 07:59) [25]
А вы уверены в его значении по окончании цикла?
← →
Palladin © (2006-10-06 08:04) [28]
> а по какой причине нельзя использовать?
для тебя в первую очередь по причине предупреждения компилятора
← →
Джо © (2006-10-06 08:06) [29]> [25] Gydvin © (06.10.06 07:59)
>
> > счетчик цикла используется за его пределами
>
> а по какой причине нельзя использовать?
Потому, что, согласно стандарту языка Паскаль, его значение за пределами цикла неопределено. То есть, совершенно не гарантируется, что в нем будет содержаться какое-то определенное значение.
← →
Gydvin © (2006-10-06 08:11) [30]Понятно этого я не знал. Впринципе в моем коде можно использовать счетчик (i)
← →
SergP © (2006-10-06 22:35) [31]> Ну а зачем переписывать стандартные функции Trim с ущемлением
> функциональности, когда без всякого телепатора ясно, что
> автор хочет избавиться не только от пробелов, но и от всех
> незначащих символов, код которых находится до пробела.
Без телепатора можно только догадываться, но никак не знать наверняка...
← →
Anatoly Podgoretsky © (2006-10-07 01:10) [32]Это не счетчик цикла, а обычная переменная, поэтому нормально.
← →
Anatoly Podgoretsky © (2006-10-07 01:10) [33]Или речь про 15?
← →
Думкин © (2006-10-07 06:03) [34]> Anatoly Podgoretsky © (07.10.06 01:10) [33]
Про 15 - вторая функция.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.048 c