Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1159348985
Wolferio
2006-09-27 13:23
2006.10.22
Кодировка НБУ


6-1147450761
serko
2006-05-12 20:19
2006.10.22
TNMHTTP


6-1148975869
DVM
2006-05-30 11:57
2006.10.22
Программно добавить привязку Binding в TIdUDPServer?


2-1159429147
Megabyte
2006-09-28 11:39
2006.10.22
Изменяемые сложные запросы


2-1160040447
lobach
2006-10-05 13:27
2006.10.22
Ошибка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский