引用:
作者: mini
個人也對字串運用下過一份苦心
不錯用的說
比如
strTemp=StringSplit_Str("c:\abc\temp\test.txt", "1\0$\", 0)
|
<1>
謝謝版主的分享!!
這個 Function 的感覺有點像 Split 的進階功能
(個人感覺是很像不用 陣列企接收 的 split,而且還直接取出想要的部份)
可以給劣者拿來用嗎?!
小弟收下來研究一下∼∼
雖然程式碼蠻精簡的,不過看範例,發現 可以拿來應用的範圍 還真不少,
((1)取得路徑、檔名
(2)分離參數 ......)
(PS:不過可否請教一下
<1>Static no As Long
小弟發現這行的宣告會造成一個很不確定的變數,
拿您的範例使用之後,分別使用的時候,是 OK 的
但是當 聯合使用時,下列的[範例1]、[範例2]會受影響
因為 no 一直在累加!!
EX:
引用:
作者: mini
^^
[範例1]
strText="a,b,c,d,e"
strTemp=StringSplit_Str(strText, ",", 0)
strTemp=StringSplit_Str(strText, ",")
strTemp=StringSplit_Str(strText, ",")
strTemp=StringSplit_Str(strText, ",")
strTemp=StringSplit_Str(strText, ",")
則strTemp依序得到 "a" "b" "c" "d" "e"
[範例2]
LEND$ = ChrW$(13) & ChrW$(10)
strText= _
"第一行" +LEND+ _
"第二行" +LEND+ _
"第三行"
do
strTemp=StringSplit_Str(strText, LEND)
ListBox.Additem strTemp
loop until strTemp=""
|
(1)當範例 1 Run 過一次時,(範例1結果ok)再 Run 範例 2(範例2結果not ok)
(2)當範例 2 Run 過一次時,(範例2結果ok)再 Run 範例 1(範例1結果not ok)
(3)當範例 1 Run 兩次時,第一次 結果ok ,第二次結果not ok)
(4)當範例 2 Run 兩次時,第一次 結果ok ,第二次結果not ok)
(5) 上述的執行都是在 Restart 程式之後才是如此,若是一直 Keep 混合交叉 Run 的話,那只會有最初的第一次結果是對的!!!
(偶初步的認知是這個 no 為了找下一個字串而設的!
也知道了 StartNO > 0 會把它做一個清除)
但是總是覺得有點......,
同樣的程式碼,但是造成了兩次的執行結果不同,
那是不是要變成要很注意 no 的變化
不曉得是小弟不懂得使用還是....
若是說的不對的話,請 版主 不吝批評指正
(畢竟小弟雖然不是初學,但是都是看書來的,觀念並不是那麼正確)
<2>1\0 這樣的寫法,是怎麼的由來,
好像是 C or Pascal 的寫法,是不是依那個的靈感來寫的咧!!!
(好像啦,小弟很久沒碰過了))
<2>
If TextTemp = "" Then Exit Function
這個出現了兩次(分別出現在正、逆搜尋)
這句應該可以移到 變數宣告完後的 第一行,
兩行可以變成 一行,可以省了一行程式碼∼∼
(小弟個人的看法啦!!)