delphi之分割字串

2022-04-05 22:35:11 字數 1818 閱讀 5443

因為喜歡用文本來記錄資料,比如帳號密碼等等,乙個遊戲帳戶一行

帳號1,密碼1,遊戲區11

帳號2,密碼2,遊戲區11

需要用到分割字串函式。

delphi的classes有extractstrings函式,感覺用起來不好,後來網上找了個,如下

function splitstring(pstring:pchar;psubstring:pchar):tstringlist;

varnsize,substringsize:dword;

inti,intj,intk:dword;

ts:tstringlist;

curchar:char;

strstring:string;

strsearchsubstr:string;

begin

nsize:=strlen(pstring);

substringsize:=strlen(psubstring);

ts:=tstringlist.create;

strstring:='';

inti:=0;

while inti<=(nsize-1) do

begin

if (nsize-inti)>= substringsize then

begin

if ((pstring+inti)^=psubstring^) then

begin

intk:=inti;

strsearchsubstr:='';

curchar:=(pstring+intk)^;

strsearchsubstr:=strsearchsubstr+curchar;

intk:=intk+1;

for intj:= 1 to substringsize-1  do

begin

if ((pstring+intk)^=(psubstring+intj)^) then

begin

curchar:=(pstring+intk)^;

intk:=intk+1;

strsearchsubstr:=strsearchsubstr+curchar;

endelse begin

inti:=intk;

strstring:=strstring+strsearchsubstr;

break; //不匹配 退出for

end;

end;

if (intj=substringsize) or (substringsize=1) then

begin

inti:=intk;

ts.add(strstring);

strstring:='';

end;

endelse begin

curchar:=(pstring+inti)^;

strstring:=strstring+curchar;

inti:=inti+1;

end;

if inti=nsize then

begin

ts.add(strstring);

strstring:='';

end;

endelse begin //將剩下的字元給作為乙個字串複製給字串集合

strstring:=strstring+string(pstring+inti);

ts.add(strstring);

inti:=nsize;

end;

end;

result:=ts;

end;

用起來比較順手,就一直用它了,感謝原作者。

字串操作之分割字串

分割字串分兩種,一類是以某個字元為key分割,一類是以某個串為key分割。以串分割的 先找到key在原字串中的位置,這個演算法就多了,kmp 然後用strcnp,strcat來操作,舉個例子,也是引出本次討論的問題,刪除 80三個字元。char p char result strchr p 5 in...

DELPHI 字串分割處理

tstringlist,預設分割符為逗號 空格 回車,還可以指定單個字元 但是待分解的字串中不能包含逗號 空格 回車 indy的庫函式和tstringlist差不多,也不能包含逗號 空格 回車 下面這個函式是我自己寫的,指定分割符,可以單個字元,也可以是多個字元為分割符號,專案中一直在用,還不錯 f...

c庫函式之分割字串

函式原型 char strtok char strtoken,const char strdelimit 引數說明 strtoken 包含 token 的字串,即待分割串 strdelimit token 的集合,strtoken 會根據這裡的每個字元進行分割 返回值 返回指向第一段被擷取出來的字串...