|
| Splitte en string op til et array Fra : Michael |
Dato : 05-06-01 16:55 |
|
Findes der en kommando til at splitte en string til en array?
F .eks. jeg har en string str
str := 'ord1 ord2 ord3';
som jeg vil havde lagt over i en array sådan her
arr[0] := ord1;
arr[1] := ord2;
arr[2] := ord3;
er der en kommande der gør det eller skal jeg selv lave den?
/md
| |
Thomas P (05-06-2001)
| Kommentar Fra : Thomas P |
Dato : 05-06-01 18:12 |
|
> som jeg vil havde lagt over i en array sådan her
> arr[0] := ord1;
> arr[1] := ord2;
> arr[2] := ord3;
>
> er der en kommande der gør det eller skal jeg selv lave den?
Dem, der forstand har på de goe gamle string-funktioner vil sikkert bombe
mig hvis jeg går for meget i detaljer med min løsning Hvorfor så ikke
bare køre hele strengen gennem en løkke, der hele tiden stykker et ord
sammen indtil der kommer et mellemrum...
--
- Thomas
~~~~~~~~
.... http://www.FlowCode.f2s.com - where code flows
.... mailto:blomme@post.com - where email goes
| |
Michael (05-06-2001)
| Kommentar Fra : Michael |
Dato : 05-06-01 20:12 |
|
>Hvorfor så ikke
> bare køre hele strengen gennem en løkke, der hele tiden stykker et ord
> sammen indtil der kommer et mellemrum...
Det har jeg også gjordt, men jeg er vand til fra andre sprog at der er en
"split" funktion som gør det for mig og det er alt andet lige noget nemmere.
/md
| |
Harald (05-06-2001)
| Kommentar Fra : Harald |
Dato : 05-06-01 20:27 |
|
"Michael" <michael@danfamily.org> skrev i en meddelelse
news:Fh7T6.3606$R84.620601@news010.worldonline.dk...
> Findes der en kommando til at splitte en string til en array?
>
> F .eks. jeg har en string str
> str := 'ord1 ord2 ord3';
>
> som jeg vil havde lagt over i en array sådan her
> arr[0] := ord1;
> arr[1] := ord2;
> arr[2] := ord3;
>
> er der en kommande der gør det eller skal jeg selv lave den?
Hej
Hvad med noget i denne stil:
procedure SplitLine(Line : String;Strings : TStrings);
var
i : integer;
begin
Strings.Clear;
if Line='' then
exit;
Repeat
i:=pos(#32,line);
if i=0 then
i:=Length(Line)+1;
Strings.Add(copy(Line,1,i-1));
Delete(Line,1,i);
until Line='';
end;
Mvh
HK
| |
FreeAll (07-06-2001)
| Kommentar Fra : FreeAll |
Dato : 07-06-01 16:59 |
|
Du skal bruge dette. Arr er bare et dynamisk array, men det er nemt nok at
omsætte. CountChars tæller hvor mang Chr der er i Str. ParseIt giver dig et
bestemt nummer ord. Str er strengen, Chr er den char der deler ordene
(næsten altid #32 ( )), Position er det nummer ord du vil have. Husk man
skal gå fra 1 til CountChars(str,#32)+1 da der er 1 ord mere end der er
mellemrum.
var
Form1: TForm1;
arr: array of string;
implementation
{$R *.DFM}
function CountChars(Str: string; Chr: char): integer;
var
i: integer;
begin
result := 0;
for i:=1 to length(str) do
if str[i] = chr then inc(result);
end;
function ParseIt(Str: string; Chr: Char; Position: integer): string;
var
i: integer;
begin
if Position <= 0 then Str := '';
// if Position > CountChars(str,chr) then str := '';
for i:=1 to Position - 1 do
begin
if pos(Chr,Str) <= 0 then Str := '';
delete(Str,1,pos(Chr,Str)+length(Chr)-1);
end;
if pos(Chr,Str) > 0 then delete(Str,pos(Chr,Str),length(Str));
result := Str;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
i: integer;
begin
str := 'jensen fra vandeløse er grim';
for i:=1 to CountChars(str,#32)+1 do
begin
Setlength(arr,length(arr)+1);
arr[length(arr)-1] := ParseIt(str,#32,i);
end;
for i:=0 to length(arr)-1 do
ListBox1.Items.Add(arr[i]);
end;
"Michael" <michael@danfamily.org> wrote in message
news:Fh7T6.3606$R84.620601@news010.worldonline.dk...
> Findes der en kommando til at splitte en string til en array?
>
> F .eks. jeg har en string str
> str := 'ord1 ord2 ord3';
>
> som jeg vil havde lagt over i en array sådan her
> arr[0] := ord1;
> arr[1] := ord2;
> arr[2] := ord3;
>
> er der en kommande der gør det eller skal jeg selv lave den?
>
>
> /md
>
>
| |
|
|