一個字串a為“[7 7 7 7 ........7 -32000 ]”一共34個7 和一個-32000,數字中間用空格隔開
b=InStr(a,"[") c=InStr(a,"]") d = len(a)
為什么c會等于77. a =79 百思不得其解,哪位給解答一下多謝。
uj5u.com熱心網友回復:
我這兒測驗,完全正常!自己看截圖。

另外,Instr( )函式,似乎大家都沒按“規范用法”寫。
比如,b=InStr(a,"[")
正確寫法,應該是 b=InStr(1, a,"[") 吧!
雖然它的引數都是“可預設的”,但它第1個引數是“起始查找位置”,
就算按VB6的語法,也應該是寫成 b=InStr(, a,"[") 吧!!!

可能 IDE按引數型別,去“匹配”了一下相關引數,因此把第1個逗號省了,也沒給你們報錯。
我自己的代碼中,是從來沒省略第1個引數的。下面截圖中,只是按樓主的代碼格式來測驗,才省了的。

你說的“a =79”,應該是 “d = 79”吧!
不過,我的測驗結果,c 和 d 都是 77。
uj5u.com熱心網友回復:
我就是不明白為什么C是77呢?35個數字 加上中間的空格 再加上兩個中括號,為什么是77個字符呢?uj5u.com熱心網友回復:
35 個數字中,34 個 “7” 的總長是 34 位元組,-32000 是 6 位元組,共 40 個位元組。加上 35 個空格和 2 個括號,為什么不是 77 位元組呢?Instr 的格式是兼容省略第一個引數的。微軟給的示例也是這樣。只有當起始位元組不等于 1 時,才需要 3 引數格式。
uj5u.com熱心網友回復:
]前面一共有:34個7+34個空格 + 那個負數6個字符 + 負數屁股后面1個空格 + 最前面的括號1個字符
= 34 + 34 + 6 + 1 + 1 = 76
那么 ]當然是第77個咯
c=77沒毛病
uj5u.com熱心網友回復:
我還以為樓主說的是出現 “d = 79”,百思不得其解呢…………搞了半天,居然說的是無法理解 c = 77。
c =77是顯而易見的, 但我不明白樓主的 “d = 79”從何而來!
uj5u.com熱心網友回復:
突然想到一個問題: 不可見字符不知道樓主的字串 a的值是用什么方式得到的,可能它的結尾有 vbCrLf ,
你看起來是 ] 結束的,實際后面還有兩個字符:回車符、換行符。
比如:你從Excel作業簿的某單元格Ctrl+C,或者從“記事本”中某行起始處向下拖滑鼠到下一行起始處選定文本再Ctrl+C,
然后到VB6的 TextBox 中Ctrl+V ,再后來……你的代碼中取其 .Text ,就會出現這種事情。
uj5u.com熱心網友回復:
d=79,十有八九是屁股后面有個回車換行, vbcrlfuj5u.com熱心網友回復:
把不可見字符變為對應的可見形式,是程式員的基本技能。uj5u.com熱心網友回復:
關鍵是看需要如何處理,和具體的需求。
“轉換為可見”大多數情況下是沒這種需求的,都是截取需要的部分進行處理就好了。
uj5u.com熱心網友回復:
其實程式員需要的基本技能是只識別和處理需要處理的資料,剩下的隨他去吧,要容錯,要允許垃圾進來,要能從垃圾里找能吃的吃,甚至要把垃圾轉換為能吃的……轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/45258.html
標籤:VB基礎類
