DELPHI 字符串分割处理
Code1
Function FindStr(BegSprStr,EdSpStr:String;varSource:String):String;2
var3
BegStr1Len,EdSpStr2Len,BegStr1Index,EdSpStr2index:integer;4
Temp:String;5
begin6
Temp:=Source;7
BegStr1Index:=Pos(BegSprStr,Temp);8
BegStr1Len:=Length(BegSprStr);9
delete(Temp,BegStr1Index,BegStr1Index+BegStr1Len-1);10
EdSpStr2index:=Pos(EdSpStr,Temp);11
EdSpStr2Len:=Length(EdSpStr);12
Result:=Copy(Temp,1,EdSpStr2index-1);13
Delete(Temp,1,EdSpStr2index+EdSpStr2Len-1);14
Source:=temp;15
end
該函數的功能就是取兩個相隔符之間的字符.
var Source:string
Source:=<1111>string1<1122><2233>string2<3344><4455>string3<5566>;
string1:=FindStr('<1111>','<1122>',Source);
String2:=FindStr('<2233>','<3344>',Source);
String3:=FindStr('<4455>','<5566>',Source);
//---------------------------------------------我想取得一个email地址的用户名
function myuser(email:string):string;
var
i,n:integer;
begin
n:=pos('@',email);
result:=copy(email,0,n-1);//改了一下
end;
//---------------------------------------------
下面就可以取出
leftstr(emaddress,Pos('@',emaddress))
//---------------------------------------------
uses IdGlobal;
User := Fetch(EmailAddress, '@');
//--------------------------------
ExtractStrings(要分隔的字符串,分隔字符串用的字符集合,分隔后排在第一位的消去的字符集合,字符串列表对象)
另一个函数SplitString
//这个我最喜欢用了
function SplitString(const source, 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;
例子:
st := SplitString('xxx@hoho.com', '@');
则
st[0] = 'xxx';
st[1] = 'hoho.com';