全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2931
推到 Plurk!
推到 Facebook!

多字元的字串分割函式MultiSpilt

 
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-31 12:29:35 IP:218.167.xxx.xxx 未訂閱
處理Delimeters 不一定是一個字元的狀況 且處理最後一個也是Delimeters 的情形    use StrUtils;    
function MultiSplit(const Str, Delimiters: string): TStrings;
var
  ss: WideString;
  St1, St2: integer;
begin
  Result := TStringList.Create;
  St1:=1;
  St2:=PosEx(Delimiters, Str, St1);
  While (St2>0) do
  begin
    if (St2>St1) and (St21) and (St1    沒有仔細找過站內是否有相同內容發表過的
如有重覆 敬請見諒     @瞭解越多.懂得越少@
        
yaoyao01tw
一般會員


發表:28
回覆:17
積分:9
註冊:2003-01-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-20 11:37:35 IP:61.58.xxx.xxx 未訂閱
好像無法正確分割? 希望能 '12/12/12/12/12' 取出 12 12 12 12 12 不知道是否能做到?
roviury
一般會員


發表:3
回覆:49
積分:15
註冊:2008-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-18 19:13:26 IP:203.186.xxx.xxx 訂閱
分高效低效2種,實際使用差別不大,但第2種較直觀

[code delphi]

function MultiSpilt(str,substr:string):tstrings;
var
i,sl,k,ssl:integer;
begin
result:=tstringlist.create;
i:=0;
sl:=length(str)-1;
k:=0;
ssl:=length(substr);
while i if k=ssl then begin
result.add(copy(str,1,i-k));
delete(str,1,i-k ssl);
dec(sl,i-k ssl);
i:=0;
k:=0;
end;
if str[i 1]=substr[1 k] then inc(k) else if k>0 then k:=0;
inc(i);
end;
result.add(str);
end;
function MultiSpiltB(str,substr:string):tstrings; // MultiSpiltB(' A%B,C{}AX','{}') A%B,C{}AX=A_%B,C{}AX=A_%B:%C{}AX=A_%B:%C,AX
var
i:integer;
begin
result:=tstringlist.create;
result.CommaText:=
StringReplace(
StringReplace(
StringReplace(str,'%','_%',[rfReplaceAll])
,',',':%',[rfReplaceAll]
)
,substr,',',[rfReplaceAll]
);
for i := 0 to result.Count-1 do begin
result[i]:=StringReplace(
StringReplace(result[i],':%',',',[rfReplaceAll])
,'_%','%',[rfReplaceAll]
);
end;
end;

[/code]
系統時間:2024-05-16 1:33:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!