POS 增強功能 : 最後位置,第 N 次位置,出現次數 |
|
Justmade
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
這只是很簡單的增強 POS 功能的 function ,不知有沒人 POST 過類似的 PosEnd 是回傳 SubStr 在 S 最後一次出現的位置,若沒出現回傳 0 PosN 是回傳 SubStr 在 S 第 n 次出現的位置,若出現少於n次回傳 0 PosCount 是回傳 SubStr 在 S 出現的次數 放這些 Function 的 Unit 要加 use StrUtils
function PosEnd(Substr,S: string): Integer; var i : integer; begin i := 0; repeat result := i; i := i 1; i := PosEx(SubStr,S,i) until i <= 0 end; function PosN(Substr,S: string; N : Integer): Integer; var i: integer; begin result := 0; For i := 1 to N do begin result := result 1; result := PosEx(SubStr,S,result); end; end; function PosCount(SubStr,S : string) : Integer; var i : integer; begin i := 0; result := -1; repeat result := result 1; i := i 1; i := PosEx(SubStr,S,i) until i <= 0 end; |
Justmade
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
From Delphi 7 VCL
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer; var I,X: Integer; Len, LenSubStr: Integer; begin if Offset = 1 then Result := Pos(SubStr, S) else begin I := Offset; LenSubStr := Length(SubStr); Len := Length(S) - LenSubStr 1; while I <= Len do begin if S[I] = SubStr[1] then begin X := 1; while (X < LenSubStr) and (S[I X] = SubStr[X 1]) do Inc(X); if (X = LenSubStr) then begin Result := I; exit; end; end; Inc(I); end; Result := 0; end; end; |
San
一般會員 ![]() ![]() 發表:11 回覆:15 積分:5 註冊:2002-06-27 發送簡訊給我 |
|
San
一般會員 ![]() ![]() 發表:11 回覆:15 積分:5 註冊:2002-06-27 發送簡訊給我 |
|
sryang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |