![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Строка и символы ... трабла [D7, WinXP]
noob © (2004-11-16 01:43:00)есть строка - i, как в ней удалитьвсе пробелы ... погоите ламаку
Ega23 (2004-11-16 14:02:00) [1]
function DelSpase(const aStr:String):String;
var
i:Integer;
begin
Result:='';
for i:=1 to Length(aStr) do
if aStr(i)<>' 'then Result:=Result+aStr(i);
end;
palva (2004-11-16 13:06:00) [2]Ребяты, такие задачи решаются следующим образом:
var j: integer;
i:string;
begin
i:='Привет из Москвы';
for j:=Length(i) DownTo 1 if i[j]=' ' then delete(i,j,1);
end;
Zhekson (2004-11-16 12:14:00) [3]var
ch: char;
а если, предположим, читать строку посимвольно и если символ = ' ' то к конечной строке не прибавлять этот символ
else StrOut := StrOut + ch.
Zhekson (2004-11-16 12:07:00) [4]если вариант [3] не подходит то попробуй:
Невозможно отобразить страницу
Эта страница сейчас недоступна. Возможно, это вызвано техническими проблемами на веб-узле, или требуется изменение параметров обозревателя.
Zhekson (2004-11-16 11:58:00) [5]Давненько я сюда не заглядывал..., а зря... тут всё так же весело...
Verg (2004-11-16 11:50:00) [6]
> copy(str,2,length(str))
Мдяяя....
Kergma (2004-11-16 11:38:00) [7]А можно я, можно.....? :)
function Kill20( str : string) : string;
begin
if length(str) > 1 then
result := Kill20(str[1]) + Kill20(copy(str,2,length(str)))
else
if str = ' ' then result := '' else result := str;
end;
test passed.
Amoeba (2004-11-16 11:18:00) [8]Используй бибилиотеку ф-й для работы со строками QStrings.
begin...end (2004-11-16 10:56:00) [9]
> [17] Ega23 © (16.11.04 10:47)
Да, ты прав, это я ошибся, но всё равно есть другие стандартные функции типа StringReplace или [3].
Ega23 (2004-11-16 10:47:00) [10]2 begin...end © (16.11.04 10:05) [12]
Можно и через while; только я не вижу причин использовать здесь вообще какие-то циклы, поскольку существует стандартная функция Trim.
Trim не удаляет ВСЕ пробелы из строки. Только справа-слева.
begin...end (2004-11-16 10:16:00) [11]
> [15] Gloomer © (16.11.04 10:12)
Молодец; теперь, по крайней мере, код будет корректно работать.
Gloomer (2004-11-16 10:12:00) [12]Ну ладно вам, я еще не проснулся :-(
for j:=1 to length(i) do if i[j]<>' ' then i1:=i1+i[j];
>[12] begin...end
надеюсь, я правильно испавился
Verg (2004-11-16 10:11:00) [13]Так же предлагаю запретить телепередачу "Спокойной ночи малыши" - об чем они там вообще, деский сад какой-то. Это все уже было лет ц-ать назад.
REA (2004-11-16 10:09:00) [14]Было уже год назад. Дошли до того, что стали на асме соревноваться кто лучше удалит. Предлагаю тему удаления пробелов считать запрещенной.
begin...end (2004-11-16 10:05:00) [15]
> [8] Ega23 © (16.11.04 09:28)
Можно и через while; только я не вижу причин использовать здесь вообще какие-то циклы, поскольку существует стандартная функция Trim.
> [9] Gloomer © (16.11.04 09:44)
Твоё решение ещё хуже; во-первых, ты не учёл замечание насчёт индексации символов; а во-вторых, в результате выполнения твоего кода строка i либо будет пустой, либо будет содержать 1 символ; хотя даже и так говорить некоректно, из-за некорректности самого кода.
Ega23 (2004-11-16 09:52:00) [16]Gloomer © (16.11.04 09:44) [9]
Ну и что у тебя получится?
Verg (2004-11-16 09:47:00) [17]В че сегодня, издеваетесь что ли ?!
Gloomer (2004-11-16 09:44:00) [18]> [2] Поручик
Правильнее было бы,как приведено ниже, правда вводится еще одна переменная, но это надеюсь не страшно :-)
var j: integer;
i,i1:string;
begin
i:='Привет из Москвы';
i1:='';
for j:=0 to length(i) do if i[j]<>' ' then i1:=i[j];
i:=i1;
end;
А в общем случае не стоит игнорировать совет ЮЮ[3]
Ega23 (2004-11-16 09:28:00) [19]Вообще-то такие циклы надо через While организовывать, а не через for ....
begin...end (2004-11-16 08:56:00) [20]
> [6] Поручик © (16.11.04 04:28)
> 1. Это работает в том виде в котором я привел
Как оно может нормально работать? Ты, наверное, что-то путаешь; я уж не говорю о том, что нумерация символов в строке начинается с единицы; включи для верности Range Checking и выполни свой код, о результатах можно не сообщать.
> 2. Для Нуба сойдет.
Чего ж ты Нуба так не уважаешь, он тебе этого не простит.