Главная страница
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
1-33687
Perekrestok
2003-08-29 13:51
2003.09.11
Интерфейс как у дисков с софтом AlexSoft


3-33485
Andrey007
2003-08-20 13:32
2003.09.11
Можно ли в SQL-запросе указать, что надо взять только первые 10


14-33765
Igor__
2003-08-23 11:01
2003.09.11
Квантизация цветов


3-33510
uhhax
2003-08-20 03:55
2003.09.11
нестандартный просмотр отчета


14-33771
KSergey
2003-08-22 15:32
2003.09.11
---|Ветка была без названия|---