Главная страница
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.022 c
14-33726
Basja
2003-08-25 09:49
2003.09.11
IRQ


1-33568
Pirat
2003-08-28 12:15
2003.09.11
странный глюк TListView


3-33436
Sergant
2003-08-19 17:24
2003.09.11
Проблема с упаковкой БД при использовании Halcyon 6.95


3-33445
Nikola62
2003-08-21 15:34
2003.09.11
Сравнение таблиц


3-33477
eds
2003-08-20 14:51
2003.09.11
Не создается файл *.gbk