webForumDet fria alternativet

Explode (igen)

1 svar · 209 visningar · startad av Alpha II

Alpha IIMedlem sedan maj 20002 579 inlägg
#1

Jag har lyckats skriva en funktion som delar upp en sträng till en array of string. Men jag vill inte att koden ska bry sig om ifall det är ett, två eller 110 mellanslad mellan orden och inte hller om det är tab i mellan orden.

Hur ska jag göra det?
OCh finns det något bättre sätt att göra det här på?

type
  TStringArray = array of String;

function Explode(S, Separator: String): TStringArray;
var
  I: Integer;
  buffer: string;
  blocks: integer;
  A: TStringArray;
begin
  blocks := 0;
  SetLength(A, blocks);

  for i := 1 to length(S) do
  begin
    if S[i] = separator then
    begin
      SetLength(A, blocks+1);

      A[blocks] := Buffer;
      Buffer := '';

      Inc(blocks);
    end
    else
      Buffer := Buffer + S[i];
  end;
  // Add the last block to the array (if there is no separator on the end)
  SetLength(A, blocks+1);
  A[blocks] := Buffer;

  Result := A;
end;
MinOrkMedlem sedan aug. 2000232 inlägg
#2

Jag tycker igen att du ska ta och kolla in hjälpen på ExtractStrings och TStrings. T.ex så används TStrings i ListBox för att lagra strängarna.

Med ExtractStrings så delar du upp en sträng i flera (som lagras i en TStrings), du väljer själv vad du ska dela strängen på för tecken och även om du vill att den ska hoppa över något speciellt tecken.

Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb