Главная страница
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.023 c
1-33609
unreger
2003-09-01 13:21
2003.09.11
Как создать таймер в рантайм?


1-33578
yuliya
2003-08-28 13:59
2003.09.11
проблема


1-33619
Olegka
2003-08-29 17:57
2003.09.11
Работа с колонтитулами в Word


4-33846
sdram
2003-07-11 12:34
2003.09.11
Подскажите как прочитать переменную окружения


3-33520
undersun
2003-08-19 15:38
2003.09.11
Установка Firebird под Linux