Текущий архив: 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.46 MB
Время: 0.008 c