Delphi 擷取字串 詳細注釋

2021-10-14 16:44:11 字數 2569 閱讀 3764

rad studio 10.3.3 測試√

/// 字串分割

///

/// 被分割的字串

/// 分隔標識

/// 陣列:tarray[string]

function mstrsplit

(mstr: string; mdelimiter: string)

: tarray

;var

i, len, count: integer;

mpart: string;

marr: tarray

;begin

// 字串的長度

len :

=length

(mstr)

; mpart :=''

; count :=0

;// 遍歷字串

for i :

=1 to len do

begin

// 如果 第[i]個字元 = 分隔識別符號 或者 (是最後乙個字元 並且 這個字元 <> 分隔識別符號)

if(mstr[i]

= mdelimiter)or(

(i = len)

and(mstr[i]

<

> mdelimiter)

) then

begin

// 計數【返回時陣列的長度】

count :

= count +1;

// 設定陣列長度

setlength

(marr, count)

;// 如果 是最後乙個字元 並且 這個字元符 <> 分隔識別符號

if(i = len)

and(mstr[i]

<

> mdelimiter) then

// 擷取部分 = 上個分隔符之後遍歷的部分 + 當前不是分隔符的字元

mpart :

= mpart + mstr[i]

;// 陣列[count-1] = 擷取部分

marr[count -1]

:= mpart;

// 清空擷取部分的臨時值

mpart :=''

; end

else

begin

// 擷取部分 = 上個分隔符之後的擷取臨時值 + 這個不是分隔符的值

mpart :

= mpart + mstr[i]

; end;

end;

// 遍歷完成後返回陣列

result :

= marr;

end;

procedure tform1.

button8click

(sender: tobject)

;var

mstr: string;

marr: tarray

;begin

mstr :

='小印01*小印02*小印03*小印04'

;// 呼叫方法

marr :

=mstrsplit

(mstr,

'*')

;// 因為我知道長度,所以就直接列印了

showmessage

(marr[0]

+ #13#10

+ marr[1]

+ #13#10

+ marr[2]

+ #13#10

+marr[3]

);end;

procedure strsplit

(const astr, adelimiter: string; out astrlist: tstringlist)

;var

i, mlen: integer;

mpart: string;

begin

mlen :

=length

(astr)

; mpart :=''

;for i :

=1 to mlen do

begin

if(astr[i]

= adelimiter)or(

(i = mlen)

and(astr[i]

<

> adelimiter)

) then

begin

if(i = mlen)

and(astr[i]

<

> adelimiter) then

mpart :

= mpart + astr[i]

; astrlist.

add(mpart)

; mpart :=''

; end

else

mpart :

= mpart + astr[i]

; end;

end;

一點點筆記,以便以後翻閱。

Delphi中擷取字串

以擷取 號為例,edtspec 1為tedit,strspec為 號之前的字元,strspec2位 號之後的字元 starposition integer strspec,strspec1,strspec2 string starposition pos edtspec 1.text if star...

Delphi中擷取字串

如果要使用leftstr,rightstr,midstr必需引用系統單元strutils 宣告變數str string str helloworld 1,leftstr str,2 he 從str字串變數的最左邊 第乙個字元包括第乙個字元 開始擷取2個字元 2,rightstr str,2 ld 從...

Delphi擷取字串 防止中文截斷

在delphi中,用length來取字元長度時,會將漢字當成兩個位元組來計算,copy把漢字當成兩個來處理,可能擷取半個漢字,那我們如何知道是否取的是漢字呢?是否把乙個漢字取完整了呢?其實,可以用bytetype對取出來的字元進行判斷是乙個單字元還是漢字的一部分 mbleadbyte 漢字的第乙個位...