步驟1:字符串
VB處理字符串的方式有時(shí)會(huì)令人困惑。
texta =“ abcdefg”
在要計(jì)數(shù)為字符串的文本兩邊加上“符號。 Mid(String,Start,長度)從字符串中選擇一段文本
在字符串中沒有從0開始的起始字符串
textb = mid(texta,2,2)
這使變量textb =“ bc”
textb = mid(texta,4,4)
這會(huì)使變量textb =“ defg”
textb = mid(texta,4,5)
這會(huì)使變量textb =“ defg”
沒錯(cuò),如果您要選擇的文本長于最后一個(gè)字符結(jié)尾的可用文本
取決于您的程序,則必須放置陷阱以避免錯(cuò)誤。
陷阱:
textb = mid(texta,4,5)
如果len(textb)《5則‘Len()返回字符串的長度,《意味著小于
msgbox“文本太短“’顯示消息框字符串
exit sub‘這將退出您所在的子。結(jié)束代碼。如果您使用的是函數(shù),那么如果
在字符串中找到字符的位置,則可以退出函數(shù)
結(jié)束。
我們使用instr(Start,String1,String2)
texta =“ abcdefg”
textb = instr(1,texta,“ c”)’這將在字符串texta中找到字母c
textb現(xiàn)在等于3
注意:
Instr如果找不到則返回0(零)字符
重組:
這是一個(gè)令人討厭的問題,例如,您希望“ abcdefg”成為“ defgabc”
texta =“ abcdefg”
textb = mid(texta,4,4) &mid(texta,1,3)
還算不錯(cuò),但現(xiàn)在讓我們添加instr()函數(shù)
說您想重新組織窗簾字符處的字符串,但每次都不是相同的位置
texta =“ abcdefg”
textb =“ gfabdec”
textc = mid(texta,instr(1,texta,“ c”),len(texta)-instr(1,texta,“ c” )+ 1)&mid(texta,1,instr(1,texta,“ c”)-1)
請注意部分len(texta)-instr(1,texta,“ c”)+ 1因?yàn)閕nstr會(huì)計(jì)數(shù)您要查找的字符,所以您返回一個(gè)字符,以便mid()將字符yo您正在查找的字符串中的第一個(gè)字符串
textc現(xiàn)在等于“ cdefgab”
textd = mid(textb,instr(1,textb,“ c”),len(textb)-instr(1, textb,“ c”)+ 1)&mid(textb,1,instr(1,textb,“ c”)-1)
texted現(xiàn)在等于“ cgfabde”
讓我們嘗試查找不在字符串
texta =“ abcdefg”
textc = mid(texta,instr(1,texta,“ h”),len(texta)-instr(1,texta,“ h”)+ 1)&mid (texta,1,instr(1,texta,“ h”)-1)
您會(huì)收到錯(cuò)誤消息,因?yàn)镸id()的起始部分不能= 0,因?yàn)樽址畯?
開始,因此您必須避免運(yùn)行時(shí)錯(cuò)誤。這是執(zhí)行此操作的一種方法
texta =“ abcdefg”
如果instr(1,texta,“ h”)《》 0則
textc = mid(texta,instr(1,texta,“ h “),len(texta)-instr(1,texta,” h“)+ 1)和mid(texta,1,instr(1,texta,” h“)-1)
else‘只有一個(gè)聲明根據(jù)if情況
msgbox“無法在字符串中找到字符”’顯示帶有字符串的消息框
如果if
這幾乎總結(jié)了您需要了解的有關(guān)字符串的所有信息
第2步:轉(zhuǎn)換字符
十六進(jìn)制:
我在本周早些時(shí)候發(fā)現(xiàn)的一個(gè)與十六進(jìn)制(數(shù)字)函數(shù)的長度有關(guān)
它以十六進(jìn)制形式返回字符串
hex(11111111)返回“ A98AC7”
當(dāng)將ascii字符轉(zhuǎn)換為十六進(jìn)制時(shí),您會(huì)這樣做
texta =“ a”
hex(asc(texta))返回“ 61”
texta =“ k” hex(asc(texta))返回“ 6B”
對于ASCI字符中的大多數(shù),字符串將為2個(gè)字符
除非are的值小于16,否則僅返回1個(gè)字符
如果您希望它們?nèi)繛?個(gè)字符演員,您將執(zhí)行以下操作:
textb = hex(asc(texta))
如果len(textb)= 1,則
textb =“ 0”,并且textb‘為零而不是大寫o
end if
第3步:文件編輯
要打開文件,您需要一個(gè)freefile和一個(gè)文件名
gfile = FreeFile’gfile現(xiàn)在是下一個(gè)可用的免費(fèi)文件
c =“ c:\ test.txt”
然后有四種打開文件的方式
輸入-您只能閱讀。
輸出-您只能寫入,如果存在,它將刪除文件。回車符和換行符的最后一個(gè)字符
附加-您只能寫。它將添加到現(xiàn)有文件中?;剀嚭蛽Q行符最后一個(gè)字符
二進(jìn)制-讀寫。非常精確我現(xiàn)在唯一使用的一個(gè)。
用于構(gòu)建日志文件,然后附加使用它會(huì)將新條目添加到文件末尾。
對于更復(fù)雜的日志文件,請將整個(gè)文件加載到變量中并添加
dim stro作為字符串‘這是必須的,否則將出現(xiàn)錯(cuò)誤
gfile = FreeFile
c =“ c:\ test.txt”
open c對于二進(jìn)制文件,例如#gfile’記住gfile是數(shù)字
stro = space $(lof(gfile))‘當(dāng)打開二進(jìn)制文件時(shí),您必須知道要取的文本長度是lof(gfile)會(huì)返回多大gfile的長度和space $()返回一串空格,該空格是您輸入的數(shù)字的長度
get #gfile,1,stro’從文件號獲取,起始字節(jié),變量保存到其中。并僅加載變量的長度
close #gfile
stro現(xiàn)在等于文件test.txt。
您可以通過
ffile = FreeFile
stro = “ New line”&VbCrLf&stro‘添加“ New line”并插入返回和換行符,后跟原始文本
open c for binary as #ffile
kill c
put #ffile,1,stro’如果文件越來越小,put將覆蓋先前的信息,您應(yīng)該先殺死該文件,然后將其刪除。關(guān)閉#ffile
該文件中現(xiàn)在包含“新行”
我通過put函數(shù)發(fā)現(xiàn)的一件事是如果您嘗試放置諸如
put #ffile,133,chr(1)之類的字符,則會(huì)出錯(cuò),這將用字符1或十六進(jìn)制0x01替換字節(jié)133處的字符
我在一個(gè)程序中執(zhí)行此操作時(shí)發(fā)現(xiàn)我實(shí)際上添加了十六進(jìn)制0x08000100000001,這非常奇怪。我通過將文件加載到變量并執(zhí)行字符串mods來解決了這個(gè)問題
i = 133
stro = mid(stro,1,i-1)&chr(1)&mid(stro,i + 1,len (stro)-i)
然后
輸入#ffile,1,stro
責(zé)任編輯:wv
-
編程
+關(guān)注
關(guān)注
88文章
3616瀏覽量
93739 -
VB6
+關(guān)注
關(guān)注
0文章
6瀏覽量
10881
發(fā)布評論請先 登錄
相關(guān)推薦
評論