Delph 分割字符 方法!
来源:原创 作者:arron 日期:2010-07-08 热度:方法1:
procedure TForm1.btn1Click(Sender: TObject);
var
ASource: PChar;
AStr: String;
ACount,i: Integer;
AStrings: TStringList;
begin
ASource := 'ABC|... DEF|#### GHI|"不会被分开|# www.jx19.com"';
AStrings := TStringList.Create;
try
ACount := ExtractStrings(['|'], [' ','#','.'], ASource, AStrings);
{do any further processing}
for i := 0 to ACount -1 do
lst1.Items.Add(AStrings[i]);
finally
AStrings.Free;
end;
end;
说明:
WhiteSpace 参数指定每个子串开头被忽略的字符s。
Content 参数就是被分割的“源”串了。
Strings 参数用于接收分割后的各个子串。它的原有内容不会被清空。别忘了对Strings进行Create哦。
另外,EctractStrings不会把空串放入Strings中去。
举个例子吧:
ExtractStrings(Separators: TSysCharSet; WhiteSpace: TSysCharSet; Content: PAnsiChar; Strings: TStrings): Integer;
------------------------------------------------------------------------------------------------------
方法2:
iniText : string;
strs :TStrings;
i :Integer;
begin
// 直接当Stringlist 读,默认用,分隔
strs := TStringList.Create;
strs.CommaText := iniText;
for i := 0 to Strs.Count-1 do
Strs[i] ;
end;
------------------------------------------------------------------------------------------------------
方法3:
function SplitString(source:string; ch: string): TStringList;
var
temp, t2: string;
i: integer;
begin
result := TStringList.Create;
temp := source;
i := pos(ch, source);
while i <> 0 do
begin
t2 := copy(temp, 0, i - 1);
if (t2 <> '') then
result.Add(t2);
delete(temp, 1, i - 1 + Length(ch));
i := pos(ch, temp);
end;
result.Add(temp);
end;
读取:
strs :TStrings;
i :Integer;
strs := SplitString(iniText, ';');
for i := 0 to Strs.Count-1 do
TopTextPrint(PChar(Strs[i]));




![还你真实的开幕式!震撼美图[转]【连载】](/up_files/image/Article/2008/08/12/57015031.jpg)



