因為喜歡用文本來記錄資料,比如帳號密碼等等,乙個遊戲帳戶一行
帳號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 會根據這裡的每個字元進行分割 返回值 返回指向第一段被擷取出來的字串...