procedure TForm1.btnUsinSPLIT_functionClick(Sender: TObject); var lMyArraySpplited: TArray<string>; lMyRegKey : string; lNewRegKey : string; i : Integer; lLastDelimiter : integer; begin memo1.Lines.Clear; // // if lMyRegKey = '' or '\' -> it's necessary verify too! // But DONT problem if lLastDelimiter <= 0 // on the end, your "string" resulted can be EMPTY! // None exception will be raised! // lMyRegKey := 'part1\part2\part3\value'; // lMyArraySpplited := lMyRegKey.Split(['\']); // lLastDelimiter := lMyRegKey.LastDelimiter('\') + 1; // +1 here or below (Rigth substring) // memo1.Lines.Add('SubString Left = ' + lMyRegKey.Substring(-lLastDelimiter, lLastDelimiter)); memo1.Lines.Add('SubString Right = ' + lMyRegKey.Substring(lLastDelimiter)); // memo1.Lines.Add('LastDelimiter = ' + lMyRegKey.LastDelimiter('\').ToString); // memo1.Lines.Add(''); // lNewRegKey := lMyRegKey.Join('\', lMyArraySpplited, 0, 2); // "part1\part2" // memo1.Lines.Add('Join 0 to 2 = ' + lNewRegKey); // lNewRegKey := lMyRegKey.Join('\', lMyArraySpplited, 3, 4); // "value" // memo1.Lines.Add('Join 3 to 4 = ' + lNewRegKey); // memo1.Lines.Add(''); // for i := 0 to high(lMyArraySpplited) do begin if lMyArraySpplited[i] <> '' then memo1.Lines.Add(lMyArraySpplited[i]); end; end;
procedure TForm1.btnMyNewSplitStringsClick(Sender: TObject); var lMyRegKey : string; lMyArraySpplited: TArray<string>; begin Memo1.Lines.Clear; // lMyRegKey := 'part1\part2\part3\value'; // // start from "1" and ending on "3" chars! // using "\" like my "Delimiter" to split my string! // lMyArraySpplited := lMyRegKey.Split(['\'], '1', '3', Length(lMyRegKey)); // Memo1.Lines.Add('How many items = ' + Length(lMyArraySpplited).ToString); Memo1.Lines.Add(''); Memo1.Lines.Add('my items:'); // a Memo1.Lines.AddStrings(lMyArraySpplited); // working with my items splitted (my array) end;
procedure TForm1.btnUsingListBoxClick(Sender: TObject); var lMyRegKey: string; begin lMyRegKey := 'part1\part2\part3\value'; // ListBox1.Items.Delimiter := '\'; ListBox1.Items.DelimitedText := lMyRegKey; // ListBox2.Items.Clear; ListBox2.Items.Add(ListBox1.Items[3]); // // another ways can help too, when using a "List" // // ListBox1.Items.IndexOf('first position to start') // ListBox1.Items.IndexOf('last position to end') // ShowMessage(ListBox1.Items.KeyNames[2]); end;
end.
此帖子包含附件: 大小:102.7K
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
分割: function Split(const Separator: array of Char): TArray<string>; function Split(const Separator: array of Char; Count: Integer): TArray<string>; function Split(const Separator: array of Char; Options: TStringSplitOptions): TArray<string>; function Split(const Separator: array of string; Options: TStringSplitOptions): TArray<string>; function Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions): TArray<string>; function Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions): TArray<string>; //---------- var str: string; arr: TArray<string>; begin str := 'A-1,B-2,,,C-3,D-4';
连接: class function Join(const Separator: string; const values: array of const): string; class function Join(const Separator: string; const Values: array of string): string; class function Join(const Separator: string; const Values: IEnumerator<string>): string; class function Join(const Separator: string; const Values: IEnumerable<string>): string; class function Join(const Separator: string; const value: array of string; StartIndex: Integer; Count: Integer): string; //---------- var S: string; str: string; strArr: TArray<string>; begin str := 'A1,B2,C3,,,,D4,E5,F6,G7'; strArr := str.Split([','], ExcludeEmpty);