Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.11;
Скачать: CL | DM;

Вниз

Разобрать строку по костям.   Найти похожие ветки 

 
mfender   (2003-08-30 17:25) [0]

есть строка, например: "235 67 1084 23"

Существует ли способ легко разобрать ее на числа между пробелами, типа как это делает explode в PHP? Или для этого придется-таки писать свою функцию?


 
Song ©   (2003-08-30 17:34) [1]

TStrings.Delimiter/DelimitedText


 
Subdigger ©   (2003-08-30 17:35) [2]

s:= "235 67 1084 23"
d:=copy(s,1,pos(" ",s)-1);
delete(s,1,pos(" ",s));


 
Юрий Зотов ©   (2003-08-30 17:35) [3]

Придется, но очень простую.

type
TEnumNumbersProc = procedure(Number: integer);

procedure EnumNumbers(S: string; Proc: TEnumNumbersProc);
var
i: integer;
begin
with TStringList.Create do
try
Text := S;
for i := 0 to Count - 1 do Proc(StrToInt(Strings[i]))
finally
Free
end
end;


Вызов такой:

procedure EnumNumbersProc(Number: integer);
begin
... // Обработка полученного числа
end;

...

EnumNumbers("235 67 1084 23", EnumNumbersProc);


 
Юрий Зотов ©   (2003-08-30 17:37) [4]

Ох, елы-палы, описка. Конечно, не Text := S, а CommaText := S.


 
Song ©   (2003-08-30 17:39) [5]

Юрий, вроде CommaText только для разделитtлей " и ,


 
mfender   (2003-08-30 17:39) [6]

Спасибо.


 
Юрий Зотов ©   (2003-08-30 17:46) [7]

> Song © (30.08.03 17:39) [5]

F1 :о)))

When assigning CommaText, the value is parsed as SDF formatted text. For SDF format, strings are separated by commas or spaces , ...


 
Song ©   (2003-08-30 18:05) [8]


> F1 :о)))


Ну спасибо Вам..


 
Юрий Зотов ©   (2003-08-30 19:13) [9]

> Song © (30.08.03 18:05) [8]

:о)))


 
ZioN ©   (2003-08-30 20:54) [10]

А можна по-другому:

function noprob(s: string): string;
var n:string

i:integer;
begin
n:="";
for i:=1 to length(s) do
ifs[i]<>" " then n[i]:=s[i];
result:=n;
end;


 
ZioN ©   (2003-08-30 20:55) [11]

sorry, описка, между "if" и "s[i]"- прбел.


 
vuk ©   (2003-08-30 21:01) [12]

http://delphibase.endimus.com/?action=viewfunc&topic=strsearch&id=1006 3

В примере разбор строки на слова по разделителям с любым количеством разделителей и в один проход.


 
Юрий Зотов ©   (2003-08-30 21:02) [13]

> ZioN © (30.08.03 20:54) [10]

1. N - лишняя переменная (есть Result).
2. Если бы функция сработала, как задумывалось, то она просто слила бы все числа в одно, а это совсем не то, что требовалось.
3. Функция вообще не сработает, так как при любой непустой строке S даст ошибку.



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

Текущий архив: 2003.09.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
14-33808
MVova
2003-08-22 12:03
2003.09.11
Задачка про чай.


1-33603
Relaxxx
2003-09-01 11:30
2003.09.11
Событие у КомбоБокс


1-33678
Юлия
2003-08-29 09:41
2003.09.11
Можно ли для treeview сделать возможность отмечать узлы? (check)


1-33657
Mohamed
2003-08-29 20:58
2003.09.11
Progress bar


14-33745
Vlad Oshin
2003-08-25 15:41
2003.09.11
Поможите, опять ВинXP... Первый раз я с ней. Не копирует по сети