在正则满天下的今天,直接做字符串截取来实现字符串分割似乎有点土,所以先用正则来实现一下字符串分割。 uses PerlRegEx; var reg:TPerlRegEx ; List:TStrings; begin List:=TStringList.Create; reg:=TPerlRegEx.Create(nil); try reg.Subject:='abc de,sdffds,中国,sss '; reg.RegEx:='[,]'; reg.Split(List,MaxInt); ShowMessage(List.Text); finally reg.Free; end; end; 当然,也可以用普通函数来实现! 下述例程实现了对有分割符的字符串进行Split2 方法1: //分割字符串 ExtractStrings var s: String; List: TStringList; begin s := 'about: #delphi; #pascal, programming'; List := TStringList.Create; ExtractStrings([';',',',':'],['#',' '],PChar(s),List); //第一个参数是分隔符; 第二个参数是开头被忽略的字符 ShowMessage(List.Text); //about //delphi //pascal //programming List.Free; end; 方法2: TStringList; lst.Delimiter:='|'; lst.DelimitedText:='aaa|bbb|ccc'; Showmessage(lst[0]);可显示出aaa,当有空格时就会将空格做为分隔符 方法3: SplitColumns是IdStrings.pas里的函数, 它修正了TStrings.DelimitedText和TStrings.Delimiter将空格也作为分隔符的问题 SplitColumns uses IdStrings; var s : string; sl : TStringList; i : Integer; begin s := 'asd 3243|435 456346|4364654'; sl :=TStringList.Create; SplitColumns(s,sl,'|'); for i:=0 to sl.Count-1 do ShowMessage(sl.Strings[i]); sl.Free; end;