Аналог explode из PHP
Модератор: Модераторы
Аналог explode из PHP
есть ли во фрипаскале такая функция как в PHP которая разивает строку в массив по подстроке. Например есть строка a^b^c^d ее нужно разбить в массив по символу ^
Соответственно элементами массива будут a, b, c, d
Соответственно элементами массива будут a, b, c, d
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Код: Выделить всё
type
TStringArr = array of string;так:
Код: Выделить всё
function explode(Delim: Char; const S: string): TStringArr;
var i, k, Len, Count: Integer;
begin
Len := Length(S);
Count := 0;
k := 1;
for i := 1 to Len do
begin
if S[i] = Delim then
begin
Inc(Count);
SetLength(Result, Count);
SetString(Result[Count-1], PChar(@S[k]), i-k);
k := i + 1;
end; // if
end; // for i
Inc(Count);
SetLength(Result, Count);
SetString(Result[Count-1], PChar(@S[k]), Len-k+1);
end;Код: Выделить всё
function explode(Delim: Char; const S: string): TStringArr;
var i, k, Len, Count: Integer;
begin
Len := Length(S);
Count := 0;
for i := 1 to Len do
if S[i] = Delim then Inc(Count);
SetLength(Result, Count + 1);
Count := 0;
k := 1;
for i := 1 to Len do
begin
if S[i] = Delim then
begin
Inc(Count);
SetString(Result[Count-1], PChar(@S[k]), i-k);
k := i + 1;
end;
end; // for i
Inc(Count);
SetString(Result[Count-1], PChar(@S[k]), Len-k+1);
end;Код: Выделить всё
procedure test_explode(const S: string);
var
arr: TStringArr;
i, Len: Integer;
begin
writeln(S);
arr := explode2('\', S);
Len := Length(arr);
for i := 0 to Len-1 do
begin
writeln(arr[i]);
end; // for i
end;- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
