標題:
[轉貼]
Len / LenB - 字串長度判斷方式的探討
[打印本頁]
作者:
Hsieh
時間:
2010-5-1 09:03
標題:
Len / LenB - 字串長度判斷方式的探討
一般認知上,LenB是傳回位元組的長度,
如此對於雙位元文字如中文、全形字等,
我們可取得字元(Byte)數而不是字數。例如:
mystr = "測試"
Len(mystr) --> 2
LenB(mystr) --> 4
VBA函數 LenB 與工作表函數 LENB 的差異
上述例子改使用工作表的 LENB 亦可得到相同的結果。
再看以下例子:
工作表 LEN("ABC") --> 3
工作表 LENB("ABC") --> 3
VBA Len("ABC") --> 3
VBA LenB("ABC") --> 6
你可能覺得奇怪,"ABC"不是半形字嗎,
為何VBA LenB 卻傳回 6 呢?
為何VBA LenB 和工作表 LENB 傳回不同結果?
先看以下再說:
LenB(StrConv("ABC",vbFromUnicode)) --> 3
透過 StrConv 轉換,LenB 即傳回我們預期的結果。
VBA輔助說明沒有明確的解釋 LenB 的處理原則,
但由此可推測 VBA LenB 是將字串以 Unicode 編碼方式處理,
而一個Unicode字元是佔兩個位元組。
註1:請參閱VBA的 StrConv 函數說明。
註2:測試環境如左,其他版本若有不同,請提出供大家參考~
作者:
eclife
時間:
2010-9-15 21:35
有時候字串裡面包含了空格會影響len函數的判斷
可以先用trim去除空格 就能確保 字串不含空格
作者:
jsleee
時間:
2011-10-24 21:42
回復
1#
Hsieh
感謝版主的分享說明.....
我是從 Google 搜尋好久才發現,原來在這個討論區就有這個探討資料....
真是捨近求遠.....
作者:
198188
時間:
2024-7-2 11:45
一般認知上,LenB是傳回位元組的長度,
如此對於雙位元文字如中文、全形字等,
我們可取得字元(Byte)數而 ...
Hsieh 發表於 2010-5-1 09:03
[attach]37806[/attach]
我試過兩部電腦操作該程式,一部可以,另一部不可以。
Microsoft 365 office 好像不行。
作者:
198188
時間:
2024-7-2 12:33
回復
1#
Hsieh
[attach]37807[/attach]
我試過兩部電腦操作該程式,一部可以,另一部不可以。
Microsoft 365 office 好像不行。
作者:
准提部林
時間:
2024-7-3 14:48
回復
5#
198188
試試以下方法
T = "123"
MsgBox Evaluate("LenB(""" & T & """)")
T = "123"
MsgBox Evaluate("LenB(""" & T & """)")
作者:
198188
時間:
2024-7-3 16:46
回復
6#
准提部林
測試結果如下:
T = "123"
MsgBox Evaluate("LenB(""" & T & """)") = 3
T = "123"
MsgBox Evaluate("LenB(""" & T & """)") = 5
T = "我23"
MsgBox Evaluate("LenB(""" & T & """)") = 6
T = "A123"
MsgBox Evaluate("LenB(""" & T & """)") = 4
不過發現另一種情況,如果是10位數字,效果又有問題, LENB =18,如下圖
[attach]37808[/attach]
作者:
准提部林
時間:
2024-7-6 08:50
回復
7#
198188
T = "
123
" 這是全型字
MsgBox Evaluate("LenB(""" & T & """)") =
5
可是看圖片, 好像是 半型123加兩個空格..."1 2 3"
作者:
198188
時間:
2024-7-8 09:00
回復
8#
准提部林
[attach]37809[/attach]
可能圖片有誤解,“1 2 3” 的部分沒問題。
是頭三個有問題。
第一個我直接在VBA�媦g T="2402290011" 然後用LENB("""&T&""") =得出答案是10
第二個我在Excel 表格B16 �堨握F 2402290011 ,T = 儲存格B16,然後用LENB("""&T&""") = 得出答案是18
第二個我在Excel 表格B16 �堨握F 2402290011 ,T = 儲存格B16,然後用LEN(T) = 得出答案是10
可以參看上圖
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)