亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

VB應用程序中實現“查找和替換”功能

2019-11-18 17:54:56
字體:
來源:轉載
供稿:網友
下載本文源代碼

一、前言

  盡管VisualBasic并不是我最喜歡的開發工具,但我喜歡它簡單而又豐富的庫集。每當開發一個需要處理大量文本數據的應用程序時,需要具有拼寫錯誤糾正功能,例如,微軟的Word程序,當運行"拼寫檢查"時,將提供給你一個改正錯誤的機會(盡管是建議),它同時也提供了"查找替換"工具,用以進行用戶定義的單詞替換。這篇文章我將解釋如何在VB應用程序中實現"查找替換"功能。

二、前提條件

  在解釋代碼的時候,我假定讀者朋友們已經有使用VisualBasic的經驗,熟悉VisualStudio開發環境中各種內置的控件及庫函數(盡管我使用的不多)。我已經嘗試著盡可能地簡化程序代碼,用不了多久你就可以明白程序的邏輯。如果想對一些庫函數(如參數,語法)進一步詳細地理解,可以參閱MSDN。圖一是程序運行后的效果圖:

->
圖一、程序實現"查找替換"功能時的效果圖->

三、基礎工作

  首先創建一個標準的EXE類型的VB工程,將默認窗體更名為frmMainForm,在默認窗體上增添一個菜單,具體設置如下(符號"&"用于加速鍵,單詞mnu后的名字用來說明菜單項的名字(在代碼中使用)):

->&Edit
...&FindandReplacemnuFindandreplace
E&xitmnuExit->

  向默認窗體添加一個TextBox控件,命名為txtClientArea。使用鼠標調整控件位置和尺寸,使它覆蓋窗體的整個客戶區,在屬性窗口將這個TextBox控件的MultiLine屬性設置為"True"。

  使用 If(FndPos>0)Then
  SourceText=ReplaceFun(SourceText,FndPos,Len(txtSearchTerm.Text),txtReplaceWithString.Text)
  Cnt=FndPos SearchTermLen
 Else
  Cnt=Cnt 1
 EndIf

 'Whetherareplacementwasdoneatallornot
 If(Cnt>=Len(SourceText))Then
  txtClient.Text=SourceText
  If(SourceTextCopy<>SourceText)Then
   MsgBox"Finishedreplacingalloccurrences.",vbInformation vbOKOnly,"ReplacedAll"
  Else
   MsgBox"Nomatchingstringsfound.Notextreplaced.",vbInformation vbOKOnly,"NoReplacement"
  EndIf
  UnloadMe
  ExitSub
 EndIf
 'ElseRestartfromhenceforth
 Wend
 ExitSub

ErrHandler:
 Response=MsgBox("Anerrorocurredwhilesearching.Informthedeveloperwithdetails.",_
vbExclamation vbOKOnly,"ErrorSearching")
EndSub

PrivateSubForm_Load()
 'DefaultSearchTermmustbetheoneselectedbytheuserin
 'MainForm
 IfLen(txtClient.SelText)<>0Then
  txtSearchTerm.Text=txtClient.SelText
 EndIf
EndSub

FunctionReplaceFun(SourceAsString,FromPosAsInteger,_
LengthAsInteger,StringTBReplaced_
AsString)AsString
 'Replacesasourcestringwithnewoneappropriately
 DimResultStrAsString

 ResultStr=Left(Source,FromPos-1)
 ResultStr=ResultStr&StringTBReplaced
 ResultStr=ResultStr&Right(Source,Len(Source)-FromPos-Length 1)

 ReplaceFun=ResultStr
EndFunction

PrivateSubtxtReplaceWithString_Change()
 CallEnableDisableReplaceButton
EndSub

PrivateSubtxtReplaceWithString_GotFocus()
 'Selectthecontentsofthetextbox
 IfLen(txtReplaceWithString.Text)<>0Then
  txtReplaceWithString.SelStart=0
  txtReplaceWithString.SelLength=Len(txtReplaceWithString.Text)
 EndIf
EndSub

PrivateSubtxtSearchTerm_Change()
 CallEnableDisableReplaceButton
EndSub

PrivateSubEnableDisableReplaceButton()
 IfLen(txtSearchTerm.Text)<>0_
  AndLen(txtReplaceWithString.Text)<>0Then
  cmdReplace.Enabled=True
 Else
  cmdReplace.Enabled=False
 EndIf
EndSub

PrivateSubtxtSearchTerm_GotFocus()
 'Selectthecontentsoftextbox
 IfLen(txtSearchTerm.Text)<>0Then
  txtSearchTerm.SelStart=0
  txtSearchTerm.SelLength=Len(txtSearchTerm.Text)
 EndIf
EndSub->
四、代碼說明

  公用接口SearchnReplace的"查找替換"算法帶有普遍性,使用這種方法,"查找替換"功能可以在任何應用程序中實現,而不用更改frmFindReplace的代碼。只是在調用公用接口的地方需要做一些小的改動。

  "查找和替換"代碼在cmdReplace_Click()過程與ReplaceFun()函數下,讓我們從cmdReplace_Click()過程開始。

  首先,變量CaseSense用于跟蹤用戶的選擇,是否是大小寫敏感,如果用戶選擇大小寫敏感的話,它的值設置為0,否則,設置為1。變量SourceText和SourceTextCopy用于保存frmMainForm窗體中txtClientArea的內容(或者是用戶在主窗體中為TextBox提供的內容,對于本程序來說,它就是txtClientArea),兩個變量保存同樣的內容將在下面進行解釋(一個是臨時變量)。變量Cnt用來跟蹤文檔的結束,當重新從文檔開始處進行"查找替換"時它將非常有用。這個變量含蓄地說明了當前光標的位置,下次的"查找替換"將從這個位置開始。

  主要的算法在while循環內,只要替換或是源TextBox被掃描時,這個循環都將被激活。

  第二步,我使用了InStr()庫函數,它將從第一個參數規定的位置處開始搜索,如果在第二個參數字符串中發現與第三個字符串相匹配的子串,將返回該子串的位置。最后一個參數是大小寫敏感選項。

  InStr()函數的返回值傳遞給FndPos,如果在源文檔中發現了所要查找的字符串,這個值將大于0,否則將返回一個0值。在緊接著的IF語句中,首先替換SourceText變量,然后是通過FndPos SearchTermLen語句修改Cnt變量,這是必須的,因為下一次的"查找和替換"要從新的位置開始。另一方面,在Else部分,Cnt變量加一,說名查找和替換要從下一個字符開始。緊接著的幾個語句用來通知用戶查找結果,它們非常容易理解,也非常容易實現??梢灾苯犹^它們。

  最后,ReplaceFun()函數進行實際的替換工作,它從源字符串的左邊開始,挑選出所有的字符,直到發現所搜索的字符串位置處為止。緊接著,StringTBReplace被添加到結果的后面,它將代替所匹配的源字符串。最后,所有的保留的源字符(排除所要更換的子字符串)被添加到這個結果中去,并作為結果返回。五、結論

  有很多方法來實現這一功能,但我認為我所使用的方法是最簡單也是最直接的,通過例子程序,你可以在應用程序中實現自己的"查找替換"功能。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲在线播放| 国产精品对白刺激| 亚洲精品动漫久久久久| 91精品国产亚洲| 亚洲网站在线播放| 日韩中文字幕久久| 日韩精品极品在线观看| 欧美壮男野外gaytube| 欧美精品免费播放| 亚洲国产天堂久久国产91| 欧美xxxwww| 国产精品一区二区三区成人| 久久91超碰青草是什么| 久久国产精品久久久久久久久久| 日韩男女性生活视频| 色99之美女主播在线视频| 成人激情春色网| 亚洲精品福利资源站| 欧美一区视频在线| 精品自在线视频| 5566成人精品视频免费| 欧美精品成人91久久久久久久| 国产精品色午夜在线观看| 欧美日韩在线观看视频小说| 国产精品久久91| 中文字幕一区二区精品| 国产欧美亚洲精品| 日韩欧美国产高清91| 美女久久久久久久久久久| 欧美性理论片在线观看片免费| 欧美性受xxxx白人性爽| 精品久久久久久国产| 欧美激情在线播放| 国产精品美女呻吟| 日韩精品日韩在线观看| 国产精品亚洲一区二区三区| 在线视频欧美日韩精品| 久久视频免费观看| 国产99视频精品免视看7| 91麻豆桃色免费看| 精品国产欧美成人夜夜嗨| 精品久久在线播放| 日韩h在线观看| 另类少妇人与禽zozz0性伦| 国产乱肥老妇国产一区二| 亚洲另类激情图| 国外成人性视频| 亚洲欧美另类中文字幕| 成人黄色在线观看| 原创国产精品91| 欧美多人乱p欧美4p久久| 91中文字幕在线观看| 国产精品麻豆va在线播放| 国产午夜精品全部视频在线播放| 欧美性猛交xxxxx水多| 欧美成人激情图片网| 久久久成人的性感天堂| 欧美激情在线狂野欧美精品| 国产欧美日韩精品丝袜高跟鞋| 色综合色综合网色综合| 欧美在线一级视频| 国产精品海角社区在线观看| 久久久电影免费观看完整版| 一区二区三区回区在观看免费视频| 日韩精品免费在线| 午夜精品久久久久久久久久久久| 国产亚洲精品久久| 日韩成人中文字幕| 九九久久精品一区| 欧美日韩成人在线播放| 亚洲视频在线观看网站| 4438全国成人免费| 国产精品久久久久秋霞鲁丝| 欧美精品在线播放| 91视频免费网站| 国产精品大陆在线观看| 亚洲成人av在线| 亚洲欧美日韩一区二区在线| 91wwwcom在线观看| 久久国产视频网站| 亚洲自拍另类欧美丝袜| 91国产美女视频| 亚洲乱亚洲乱妇无码| 亚洲成人激情视频| 国产日韩欧美综合| 久久久久久高潮国产精品视| 精品国产一区二区三区久久狼黑人| 国产91精品最新在线播放| 亚洲专区中文字幕| 国产精品视频久久久久| 日韩三级影视基地| 色狠狠av一区二区三区香蕉蜜桃| 亚洲男子天堂网| 亚洲精品视频播放| 亚洲精品动漫久久久久| 日韩国产精品视频| 国产日韩精品视频| 久久亚洲欧美日韩精品专区| 午夜精品久久久久久久久久久久久| 日韩在线观看免费| 在线观看视频99| 亚洲第一天堂av| 国产精品尤物福利片在线观看| 国产亚洲精品va在线观看| 亚洲女性裸体视频| 8x海外华人永久免费日韩内陆视频| 欧美中文字幕视频| 国产成人精品免费久久久久| 久久免费国产精品1| 国产欧美在线播放| 久久91亚洲精品中文字幕奶水| 91国偷自产一区二区三区的观看方式| 亚洲视频在线播放| 亚洲裸体xxxx| 中文字幕免费国产精品| 亚洲视屏在线播放| 欧美美女18p| 成人av.网址在线网站| 亚洲欧美综合区自拍另类| 91精品国产综合久久香蕉的用户体验| 国产欧美韩国高清| 日韩欧美亚洲成人| 国产成+人+综合+亚洲欧洲| 久久久免费在线观看| 国产精品久久久久久久app| 国产在线观看91精品一区| 欧美精品情趣视频| 国产一区二区三区欧美| 在线看欧美日韩| 国产精品99久久久久久人| 国产精品久久视频| 亚洲欧美日本另类| 国产区精品在线观看| 国产中文字幕日韩| 亚洲第一区中文字幕| 国产日韩欧美影视| 国产视频精品免费播放| 亚洲欧美中文另类| 欧美激情欧美激情| 45www国产精品网站| 日本精品久久久| 久久99热这里只有精品国产| 97色在线播放视频| 日韩中文字幕网址| 亚洲国产高潮在线观看| 国产成人精品久久| 亚洲网站在线播放| 久久久久久中文| 欧美人交a欧美精品| 国产69精品久久久久99| 一区二区三区视频观看| 久久人人看视频| 九九视频直播综合网| 81精品国产乱码久久久久久| 日韩av电影在线免费播放| 中文字幕亚洲一区在线观看| 亚洲精品中文字| 精品视频在线播放免| 热久久这里只有精品| 美女精品久久久| 在线a欧美视频| 日韩成人在线视频网站| 欧美电影免费观看大全| 91精品国产综合久久香蕉922|