1. 什么是類和對(duì)象?
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、漢臺(tái)網(wǎng)站維護(hù)、網(wǎng)站推廣。
答:類包含某一類對(duì)象的數(shù)據(jù)和過程。對(duì)象是類的實(shí)例。
2. 為什么采用類和對(duì)象進(jìn)行程序設(shè)計(jì)?
答:以便按照對(duì)象定義類,提高程序代碼的可重用性,避免重復(fù)勞動(dòng)。
3. 在同一個(gè)類中,應(yīng)當(dāng)包括哪些對(duì)象的屬性和方法?
答:同一類對(duì)象的數(shù)據(jù)和過程。
4. VB程序設(shè)計(jì)主要包括哪兩個(gè)方面的內(nèi)容?
答:Windows應(yīng)用程序界面和代碼。
5. 什么是事件驅(qū)動(dòng)?
答:根據(jù)事件轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理過程。
1. 控件是窗體上的 對(duì)象 。
2. Visual Basic具有 BASIC程序語言簡單易學(xué)的 優(yōu)點(diǎn),新增了 可視化和面向面向?qū)ο蟪绦蛟O(shè)計(jì)的 熱點(diǎn),是 Windows編程人員廣泛使用的編程 工具。
3. 對(duì)象的 屬性 是在其類中定義的數(shù)據(jù)。
4. 對(duì)象的 方法 是在其類中定義的過程。
5. 對(duì)象本身的動(dòng)作或功能稱為 方法 ,外界施加于某對(duì)象的動(dòng)作或操作稱為 事件 。
1.面向過程
是指從功能的角度分析問題,將待解決的問題空間分解成若干個(gè)功能模塊,每個(gè)功能模塊描述一個(gè)操作的具體過程。
2.面向過程程序設(shè)計(jì)
主要是根據(jù)事務(wù)本身的邏輯過程進(jìn)行編程的一種方法。
3.面向?qū)ο蟪绦蛟O(shè)計(jì)
是一種計(jì)算機(jī)編程架構(gòu),是由單個(gè)能夠起到子程序作用的單元或?qū)ο蠼M合而成。即按照對(duì)象編寫程序。
4.事件驅(qū)動(dòng)程序設(shè)計(jì)
是一種電腦程式設(shè)計(jì)模型。這種模型的程式執(zhí)行流程是由使用者的動(dòng)作或者是由其他程式的訊息來決定的。
5.函數(shù)
是一種特定的運(yùn)算,在程序中使用一個(gè)函數(shù)時(shí),只要給出函數(shù)名并給出一個(gè)或多個(gè)參數(shù),就能得到它的函數(shù)值
6.過程
是程序中可以執(zhí)行的一段代碼,過程包含在一個(gè)聲明語句和一個(gè)結(jié)束語句之間
7.類
是所有具有共同特征的事物的抽象,是一個(gè)抽象的概念(類是一組具有相同屬性特征的對(duì)象的抽象描述,是面向?qū)ο蟪绦蛟O(shè)計(jì)的又一個(gè)核心概念或者類是對(duì)一組對(duì)象共同具有的屬性和行為的抽象,具有封裝和隱藏性、還具有繼承性)。
8.對(duì)象
是一個(gè)屬性集合及其操作的封裝體(對(duì)象是用來描述現(xiàn)實(shí)世界中客體的部件,是面向?qū)ο筌浖到y(tǒng)在運(yùn)行時(shí)刻的基本單位)。
類是對(duì)象的抽象,對(duì)象是類的實(shí)例。
9.事件
窗體或控件識(shí)別的動(dòng)作
10.事件驅(qū)動(dòng)
根據(jù)事件轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理過程。
11.屬性
是一個(gè)對(duì)象的特性,不同的對(duì)象有不同的屬性
12.算法
指解決某個(gè)問題的嚴(yán)格方法,描述有始有終的計(jì)算過程。
5.屬性窗口中屬性值被設(shè)置的方式有哪幾種?
6種:輸入 選取 瀏覽 賦值 默認(rèn) 拖動(dòng)
1.程序代碼是由一行一行的 語句 所組成。
3.在程序代碼中可將一個(gè)語句分成兩段的特殊符號(hào)為( _ )。
5.數(shù)值變量如果沒有設(shè)置初值,則內(nèi)定值為 0 。
7.如果有一個(gè)變量,可能會(huì)存放數(shù)值數(shù)據(jù)或字符串?dāng)?shù)據(jù),此時(shí)可以聲明該變量為 對(duì)象變量。
9. Integer數(shù)據(jù)類型占 4 bytes的內(nèi)存空間,可以表示的數(shù)值范圍為 -2,147,483,648~2,147,483,647 的整數(shù)
3.VB.NET程序語言數(shù)據(jù)類型的種類有哪些?
(1)數(shù)值型
①整形數(shù):短整形(Short)、整形(Integer)、長整型(Long)
②字節(jié)型(Byte)
③實(shí)型數(shù):單精度型(Single)、雙精度型(Double)
④貨幣型(Decimal)
(2)字符型(Char)和字符串型(String)
(3)邏輯型/布爾型(Boolean)
(4)日期型(Date)
(5)對(duì)象型(Object)[即可變型(Variant)]
1.局部變量、全局變量、跨模塊變量分別在何處聲明?其生存期分別是多少?
局部變量在程序內(nèi)聲明。生存期為從所在的程序運(yùn)行開始到程序結(jié)束。
全局變量在窗體內(nèi)所有程序的外邊聲明。生存期為由該變量聲明開始,一直到程序退出運(yùn)行為止。
跨模塊變量在一般模塊的聲明區(qū)用Public來聲明。生存期為從一個(gè)Windows應(yīng)用程序項(xiàng)目文件開始運(yùn)行到結(jié)束。
3.什么是靜態(tài)變量?
靜態(tài)變量是在離開程序時(shí)能夠繼續(xù)保留目前的值,待下回進(jìn)入該程序時(shí)能夠繼續(xù)保留的變量值的局部變量,用Static關(guān)鍵字聲明。
(一)問答題
1.請(qǐng)簡單說明在程序中使用程序的好處。
(1)程序可以重復(fù)使用,以方便維護(hù)與程序調(diào)試。
(2)程序可以讓其他工程或項(xiàng)目使用。
(3)程序的邏輯簡單、明確,可以讓程序變得簡單且可讀性高。
(4)程序具有模塊化的功能,因此可以將一個(gè)大的應(yīng)用程序分成數(shù)個(gè)小的且不同功能的程序,讓不同的程序設(shè)計(jì)師分別編寫?yīng)毩⒉煌δ艿某绦?,并以團(tuán)隊(duì)開發(fā),加快應(yīng)用程序開發(fā)的時(shí)間。
3.試比較傳值調(diào)用與傳址調(diào)用的差異。
(1)聲明方式不同:
傳值——在程序中的虛自變量之前加上ByVal
傳址——在程序中的虛自變量之前加上ByRef
(2)占用內(nèi)存不同
傳值——調(diào)用程序的實(shí)自變量與被調(diào)用程序的虛自變量占用不同內(nèi)存
傳址——調(diào)用程序的實(shí)自變量與被調(diào)用程序的虛自變量占用同一地址的內(nèi)存,也就是說,在做參數(shù)傳遞時(shí),調(diào)用程序中的實(shí)自變量是將自己本身的內(nèi)存地址傳給被調(diào)用程序的虛自變量
(3)虛自變量更改結(jié)果不同
傳值——使用傳值調(diào)用可以防止變量被程序修改
傳址——被調(diào)用程序可以通過虛自變量將值傳回給調(diào)用程序
5.什么是程序多載?
程序多載是使用不同的自變量串行或數(shù)據(jù)類型來加以區(qū)分相同名稱的程序。
他們最喜歡什么,答案除了穩(wěn)定的系統(tǒng)和可以遠(yuǎn)程啟動(dòng)之外,十有八九的人會(huì)提到正則表達(dá)式;如果我們?cè)賳査麄冏铑^痛的是什么,可能除了復(fù)雜的進(jìn)程控制和安裝過程之外,還會(huì)是正則表達(dá)式。那么正則表達(dá)式到底是什么?如何才能真正的掌握正則表達(dá)式并正確的加以靈活運(yùn)用?本文將就此展開介紹,希望能夠?qū)δ切┛释私夂驼莆照齽t表達(dá)式的讀者有所助益。
入門簡介
簡單的說,正則表達(dá)式是一種可以用于模式匹配和替換的強(qiáng)有力的工具。我們可以在幾乎所有的基于UNIX系統(tǒng)的工具中找到正則表達(dá)式的身影,例如,vi編輯器,Perl或PHP腳本語言,以及awk或sed shell程序等。此外,象JavaScript這種客戶端的腳本語言也提供了對(duì)正則表達(dá)式的支持。由此可見,正則表達(dá)式已經(jīng)超出了某種語言或某個(gè)系統(tǒng)的局限,成為人們廣為接受的概念和功能。
正則表達(dá)式可以讓用戶通過使用一系列的特殊字符構(gòu)建匹配模式,然后把匹配模式與數(shù)據(jù)文件、程序輸入以及WEB頁面的表單輸入等目標(biāo)對(duì)象進(jìn)行比較,根據(jù)比較對(duì)象中是否包含匹配模式,執(zhí)行相應(yīng)的程序。
舉例來說,正則表達(dá)式的一個(gè)最為普遍的應(yīng)用就是用于驗(yàn)證用戶在線輸入的郵件地址的格式是否正確。如果通過正則表達(dá)式驗(yàn)證用戶郵件地址的格式正確,用戶所填寫的表單信息將會(huì)被正常處理;反之,如果用戶輸入的郵件地址與正則表達(dá)的模式不匹配,將會(huì)彈出提示信息,要求用戶重新輸入正確的郵件地址。由此可見正則表達(dá)式在WEB應(yīng)用的邏輯判斷中具有舉足輕重的作用。
基本語法
在對(duì)正則表達(dá)式的功能和作用有了初步的了解之后,我們就來具體看一下正則表達(dá)式的語法格式。
正則表達(dá)式的形式一般如下:
/love/
其中位于“/”定界符之間的部分就是將要在目標(biāo)對(duì)象中進(jìn)行匹配的模式。用戶只要把希望查找匹配對(duì)象的模式內(nèi)容放入“/”定界符之間即可。為了能夠使用戶更加靈活的定制模式內(nèi)容,正則表達(dá)式提供了專門的“元字符”。所謂元字符就是指那些在正則表達(dá)式中具有特殊意義的專用字符,可以用來規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對(duì)象中的出現(xiàn)模式。
較為常用的元字符包括: “+”, “*”,以及 “?”。其中,“+”元字符規(guī)定其前導(dǎo)字符必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)一次或多次,“*”元字符規(guī)定其前導(dǎo)字符必須在目標(biāo)對(duì)象中出現(xiàn)零次或連續(xù)多次,而“?”元字符規(guī)定其前導(dǎo)對(duì)象必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)零次或一次。
下面,就讓我們來看一下正則表達(dá)式元字符的具體應(yīng)用。
/fo+/
因?yàn)樯鲜稣齽t表達(dá)式中包含“+”元字符,表示可以與目標(biāo)對(duì)象中的 “fool”, “fo”, 或者 “football”等在字母f后面連續(xù)出現(xiàn)一個(gè)或多個(gè)字母o的字符串相匹配。
/eg*/
因?yàn)樯鲜稣齽t表達(dá)式中包含“*”元字符,表示可以與目標(biāo)對(duì)象中的 “easy”, “ego”, 或者 “egg”等在字母e后面連續(xù)出現(xiàn)零個(gè)或多個(gè)字母g的字符串相匹配。
/Wil?/
因?yàn)樯鲜稣齽t表達(dá)式中包含“?”元字符,表示可以與目標(biāo)對(duì)象中的 “Win”, 或者 “Wilson”,等在字母i后面連續(xù)出現(xiàn)零個(gè)或一個(gè)字母l的字符串相匹配。
除了元字符之外,用戶還可以精確指定模式在匹配對(duì)象中出現(xiàn)的頻率。例如,
/jim/
上述正則表達(dá)式規(guī)定字符m可以在匹配對(duì)象中連續(xù)出現(xiàn)2-6次,因此,上述正則表達(dá)式可以同jimmy或jimmmmmy等字符串相匹配。
在對(duì)如何使用正則表達(dá)式有了初步了解之后,我們來看一下其它幾個(gè)重要的元字符的使用方式。
\s:用于匹配單個(gè)空格符,包括tab鍵和換行符;
\S:用于匹配除單個(gè)空格符之外的所有字符;
\d:用于匹配從0到9的數(shù)字;
\w:用于匹配字母,數(shù)字或下劃線字符;
\W:用于匹配所有與\w不匹配的字符;
. :用于匹配除換行符之外的所有字符。
(說明:我們可以把\s和\S以及\w和\W看作互為逆運(yùn)算)
下面,我們就通過實(shí)例看一下如何在正則表達(dá)式中使用上述元字符。
/\s+/
上述正則表達(dá)式可以用于匹配目標(biāo)對(duì)象中的一個(gè)或多個(gè)空格字符。
/\d000/
如果我們手中有一份復(fù)雜的財(cái)務(wù)報(bào)表,那么我們可以通過上述正則表達(dá)式輕而易舉的查找到所有總額達(dá)千元的款項(xiàng)。
除了我們以上所介紹的元字符之外,正則表達(dá)式中還具有另外一種較為獨(dú)特的專用字符,即定位符。定位符用于規(guī)定匹配模式在目標(biāo)對(duì)象中的出現(xiàn)位置。
較為常用的定位符包括: “^”, “$”, “\b” 以及 “\B”。其中,“^”定位符規(guī)定匹配模式必須出現(xiàn)在目標(biāo)字符串的開頭,“$”定位符規(guī)定匹配模式必須出現(xiàn)在目標(biāo)對(duì)象的結(jié)尾,\b定位符規(guī)定匹配模式必須出現(xiàn)在目標(biāo)字符串的開頭或結(jié)尾的兩個(gè)邊界之一,而“\B”定位符則規(guī)定匹配對(duì)象必須位于目標(biāo)字符串的開頭和結(jié)尾兩個(gè)邊界之內(nèi),即匹配對(duì)象既不能作為目標(biāo)字符串的開頭,也不能作為目標(biāo)字符串的結(jié)尾。同樣,我們也可以把“^”和“$”以及“\b”和“\B”看作是互為逆運(yùn)算的兩組定位符。舉例來說:
/^hell/
因?yàn)樯鲜稣齽t表達(dá)式中包含“^”定位符,所以可以與目標(biāo)對(duì)象中以 “hell”, “hello”或 “hellhound”開頭的字符串相匹配。
/ar$/
因?yàn)樯鲜稣齽t表達(dá)式中包含“$”定位符,所以可以與目標(biāo)對(duì)象中以 “car”, “bar”或 “ar” 結(jié)尾的字符串相匹配。
/\bbom/
因?yàn)樯鲜稣齽t表達(dá)式模式以“\b”定位符開頭,所以可以與目標(biāo)對(duì)象中以 “bomb”, 或 “bom”開頭的字符串相匹配。
/man\b/
因?yàn)樯鲜稣齽t表達(dá)式模式以“\b”定位符結(jié)尾,所以可以與目標(biāo)對(duì)象中以 “human”, “woman”或 “man”結(jié)尾的字符串相匹配。
為了能夠方便用戶更加靈活的設(shè)定匹配模式,正則表達(dá)式允許使用者在匹配模式中指定某一個(gè)范圍而不局限于具體的字符。例如:
/[A-Z]/
上述正則表達(dá)式將會(huì)與從A到Z范圍內(nèi)任何一個(gè)大寫字母相匹配。
/[a-z]/
上述正則表達(dá)式將會(huì)與從a到z范圍內(nèi)任何一個(gè)小寫字母相匹配。
/[0-9]/
上述正則表達(dá)式將會(huì)與從0到9范圍內(nèi)任何一個(gè)數(shù)字相匹配。
/([a-z][A-Z][0-9])+/
上述正則表達(dá)式將會(huì)與任何由字母和數(shù)字組成的字符串,如 “aB0” 等相匹配。這里需要提醒用戶注意的一點(diǎn)就是可以在正則表達(dá)式中使用 “()” 把字符串組合在一起。“()”符號(hào)包含的內(nèi)容必須同時(shí)出現(xiàn)在目標(biāo)對(duì)象中。因此,上述正則表達(dá)式將無法與諸如 “abc”等的字符串匹配,因?yàn)椤癮bc”中的最后一個(gè)字符為字母而非數(shù)字。
如果我們希望在正則表達(dá)式中實(shí)現(xiàn)類似編程邏輯中的“或”運(yùn)算,在多個(gè)不同的模式中任選一個(gè)進(jìn)行匹配的話,可以使用管道符 “|”。例如:
/to|too|2/
上述正則表達(dá)式將會(huì)與目標(biāo)對(duì)象中的 “to”, “too”, 或 “2” 相匹配。
正則表達(dá)式中還有一個(gè)較為常用的運(yùn)算符,即否定符 “[^]”。與我們前文所介紹的定位符 “^” 不同,否定符 “[^]”規(guī)定目標(biāo)對(duì)象中不能存在模式中所規(guī)定的字符串。例如:
/[^A-C]/
上述字符串將會(huì)與目標(biāo)對(duì)象中除A,B,和C之外的任何字符相匹配。一般來說,當(dāng)“^”出現(xiàn)在 “[]”內(nèi)時(shí)就被視做否定運(yùn)算符;而當(dāng)“^”位于“[]”之外,或沒有“[]”時(shí),則應(yīng)當(dāng)被視做定位符。
最后,當(dāng)用戶需要在正則表達(dá)式的模式中加入元字符,并查找其匹配對(duì)象時(shí),可以使用轉(zhuǎn)義符“\”。例如:
/Th\*/
上述正則表達(dá)式將會(huì)與目標(biāo)對(duì)象中的“Th*”而非“The”等相匹配。
ASP中正則表達(dá)式的應(yīng)用(一)
一、正則表達(dá)式概述
二、正則表達(dá)式在VBScript中的應(yīng)用
三、正則表達(dá)式在VavaScript中的應(yīng)用
四、示例
五、總結(jié)
一、正則表達(dá)式概述
如果原來沒有使用過正則表達(dá)式,那么可能對(duì)這個(gè)術(shù)語和概念會(huì)不太熟悉。不過,它們并不是您想象的那么新奇。
請(qǐng)回想一下在硬盤上是如何查找文件的。您肯定會(huì)使用 ? 和 * 字符來幫助查找您正尋找的文件。? 字符匹配文件名中的單個(gè)字符,而 * 則匹配一個(gè)或多個(gè)字符。一個(gè)如 'data?.dat' 的模式可以找到下述文件:data1.dat、data2.dat等等。如果使用 * 字符代替 ? 字符,則將擴(kuò)大找到的文件數(shù)量。'data*.dat' 可以匹配下述所有文件名:data.dat、data1.dat、data12.dat等等,盡管這種搜索文件的方法肯定很有用,但也十分有限。? 和 * 通配符的有限能力可以使你對(duì)正則表達(dá)式能做什么有一個(gè)概念,不過正則表達(dá)式的功能更強(qiáng)大,也更靈活。
在我們編寫ASP程序時(shí),經(jīng)常會(huì)判斷一個(gè)字符串的有效性,如;一個(gè)串是否是數(shù)字、是否是有效的Email地址等等。如果不使用正則表達(dá)式,那么判斷的程序會(huì)很長,并且容易出錯(cuò),如果使用正則表達(dá)式,這些判斷就是一件很輕松的工作了。后面我們將介紹如何判斷數(shù)字和Email地址的有效性。
在典型的搜索和替換操作中,必須提供要查找的確切文字。這種技術(shù)對(duì)于靜態(tài)文本中的簡單搜索和替換任務(wù)可能足夠了,但是由于它缺乏靈活性,因此在搜索動(dòng)態(tài)文本時(shí)就有困難了,甚至是不可能的。
使用正則表達(dá)式,能完成些什么事情呢?
測試字符串的某個(gè)模式。例如,可以對(duì)一個(gè)輸入字符串進(jìn)行測試,看在該字符串是否存在一個(gè)電話號(hào)碼模式或一個(gè)信用卡號(hào)碼模式。這稱為數(shù)據(jù)有效性驗(yàn)證。
替換文本。可以在文檔中使用一個(gè)正則表達(dá)式來標(biāo)識(shí)特定文字,然后可以全部將其刪除,或者替換為別的文字。
根據(jù)模式匹配從字符串中提取一個(gè)子字符串。可以用來在文本或輸入字段中查找特定文字。
例如,如果需要搜索整個(gè) web 站點(diǎn)來刪除某些過時(shí)的材料并替換某些HTML 格式化標(biāo)記,則可以使用正則表達(dá)式對(duì)每個(gè)文件進(jìn)行測試,看在該文件中是否存在所要查找的材料或 HTML 格式化標(biāo)記。用這個(gè)方法,就可以將受影響的文件范圍縮小到包含要?jiǎng)h除或更改的材料的那些文件。然后可以使用正則表達(dá)式來刪除過時(shí)的材料,最后,可以再次使用正則表達(dá)式來查找并替換那些需要替換的標(biāo)記。
那么,正則表達(dá)式語法的語法是如何呢?
一個(gè)正則表達(dá)式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。
這里有一些可能會(huì)遇到的正則表達(dá)式示例:
/^\[ \t]*$/ "^\[ \t]*$" 匹配一個(gè)空白行。
/\d-\d/ "\d-\d" 驗(yàn)證一個(gè)ID 號(hào)碼是否由一個(gè)2位數(shù)字,一個(gè)連字符以及一個(gè)5位數(shù)字組成。
/(.*).*\/\1/ "(.*).*\/\1" 匹配一個(gè) HTML 標(biāo)記。
二、正則表達(dá)式在VBScript中的應(yīng)用
VBScript使用RegExp對(duì)象、Matches集合以及Match對(duì)象提供正則表達(dá)式支持功能。我們還是先看一個(gè)例子。
%
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches '建立變量。
Set regEx = New RegExp '建立正則表達(dá)式。
regEx.Pattern = patrn '設(shè)置模式。
regEx.IgnoreCase = True '設(shè)置是否區(qū)分字符大小寫。
regEx.Global = True '設(shè)置全局可用性。
Set Matches = regEx.Execute(strng) '執(zhí)行搜索。
For Each Match in Matches '遍歷匹配集合。
RetStr = RetStr "Match found at position "
RetStr = RetStr Match.FirstIndex ". Match Value is '"
RetStr = RetStr Match.Value "'." "BR"
Next
RegExpTest = RetStr
End Function
response.write RegExpTest("[ij]s.", "IS1 Js2 IS3 is4")
%
在這個(gè)例子中,我們查找字符串中有無is或者js這兩個(gè)詞,忽略大小寫。運(yùn)行的結(jié)果如下:
Match found at position 0. Match Value is 'IS1'.
Match found at position 4. Match Value is 'Js2'.
Match found at position 8. Match Value is 'IS3'.
Match found at position 12. Match Value is 'is4'.
下面我們就介紹這三個(gè)對(duì)象和集合。
1、RegExp對(duì)象是最重要的一個(gè)對(duì)象,它有幾個(gè)屬性,其中:
○Global 屬性,設(shè)置或返回一個(gè) Boolean 值,該值指明在整個(gè)搜索字符串時(shí)模式是全部匹配還是只匹配第一個(gè)。如果搜索應(yīng)用于整個(gè)字符串,Global 屬性的值為 True,否則其值為 False。默認(rèn)的設(shè)置為 False。
○IgnoreCase 屬性,設(shè)置或返回一個(gè)Boolean值,指明模式搜索是否區(qū)分大小寫。如果搜索是區(qū)分大小寫的,則 IgnoreCase 屬性為 False;否則為 True。缺省值為 False。
○Pattern 屬性,設(shè)置或返回被搜索的正則表達(dá)式模式。必選項(xiàng)??偸且粋€(gè) RegExp 對(duì)象變量。
2、Match 對(duì)象
匹配搜索的結(jié)果是存放在Match對(duì)象中,提供了對(duì)正則表達(dá)式匹配的只讀屬性的訪問。 Match 對(duì)象只能通過 RegExp 對(duì)象的 Execute 方法來創(chuàng)建,該方法實(shí)際上返回了 Match 對(duì)象的集合。所有的 Match 對(duì)象屬性都是只讀的。在執(zhí)行正則表達(dá)式時(shí),可能產(chǎn)生零個(gè)或多個(gè) Match 對(duì)象。每個(gè) Match 對(duì)象提供了被正則表達(dá)式搜索找到的字符串的訪問、字符串的長度,以及找到匹配的索引位置等。
○FirstIndex 屬性,返回在搜索字符串中匹配的位置。FirstIndex 屬性使用從零起算的偏移量,該偏移量是相對(duì)于搜索字符串的起始位置而言的。換言之,字符串中的第一個(gè)字符被標(biāo)識(shí)為字符 0
○Length 屬性,返回在字符串搜索中找到的匹配的長度。
○Value 屬性,返回在一個(gè)搜索字符串中找到的匹配的值或文本。
3、Matches 集合
正則表達(dá)式 Match 對(duì)象的集合。Matches 集合中包含若干獨(dú)立的 Match 對(duì)象,只能使用 RegExp 對(duì)象的 Execute 方法來創(chuàng)建之。與獨(dú)立的 Match 對(duì)象屬性相同,Matches `集合的一個(gè)屬性是只讀的。在執(zhí)行正則表達(dá)式時(shí),可能產(chǎn)生零個(gè)或多個(gè) Match 對(duì)象。每個(gè) Match 對(duì)象都提供了與正則表達(dá)式匹配的字符串的訪問入口、字符串的長度,以及標(biāo)識(shí)匹配位置的索引。
學(xué)習(xí)了這三個(gè)對(duì)象和集合,如何應(yīng)用于字符串的判斷和替換呢?regExp對(duì)象的三個(gè)方法正好解決了這個(gè)問題,它們是Replace方法、Test方法和Execute方法。
1、Replace 方法
替換在正則表達(dá)式查找中找到的文本。我們還是先看個(gè)例子:下面的例子說明了 Replace 方法的用法。
%
Function ReplaceTest(patrn, replStr)
Dim regEx, str1 ' 建立變量。
str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp ' 建立正則表達(dá)式。
regEx.Pattern = patrn ' 設(shè)置模式。
regEx.IgnoreCase = True ' 設(shè)置是否區(qū)分大小寫。
ReplaceTest = regEx.Replace(str1, replStr) ' 作替換。
End Function
Response.write ReplaceTest("fox", "cat") "BR" ' 將 'fox' 替換為 'cat'。
Response.write ReplaceTest("(\S+)(\s+)(\S+)", "$3$2$1") ' 交換詞對(duì).
%
2、Test 方法
對(duì)指定的字符串執(zhí)行一個(gè)正則表達(dá)式搜索,并返回一個(gè) Boolean 值指示是否找到匹配的模式。正則表達(dá)式搜索的實(shí)際模式是通過RegExp對(duì)象的Pattern屬性來設(shè)置的。RegExp.Global屬性對(duì)Test方法沒有影響。
如果找到了匹配的模式,Test方法返回True;否則返回False。下面的代碼說明了Test 方法的用法。
%
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立變量。
Set regEx = New RegExp ' 建立正則表達(dá)式。
regEx.Pattern = patrn ' 設(shè)置模式。
regEx.IgnoreCase = False ' 設(shè)置是否區(qū)分大小寫。
retVal = regEx.Test(strng) ' 執(zhí)行搜索測試。
If retVal Then
RegExpTest = "找到一個(gè)或多個(gè)匹配。"
Else
RegExpTest = "未找到匹配。"
End If
End Function
Response.write RegExpTest("is.", "IS1 is2 IS3 is4")
%
3、Execute 方法
對(duì)指定的字符串執(zhí)行正則表達(dá)式搜索。正則表達(dá)式搜索的設(shè)計(jì)模式是通過 RegExp 對(duì)象的 Pattern 來設(shè)置的。
Execute 方法返回一個(gè) Matches 集合,其中包含了在 string 中找到的每一個(gè)匹配的 Match 對(duì)象。如果未找到匹配,Execute 將返回空的 Matches 集合。
三、JavaScript中正則表達(dá)式的使用
在JavaScript 1.2版以后,JavaScript也支持正則表達(dá)式。
1、replace
replace在一個(gè)字符串中通過正則表達(dá)式查找替換相應(yīng)的內(nèi)容。replace并不改變?cè)瓉淼淖址?,只是重新生成了一個(gè)新的字符串。如果需要執(zhí)行全局查找或忽略大小寫,那么在正則表達(dá)式的最后添加g和i。
例:
SCRIPT
re = /apples/gi;
str = "Apples are round, and apples are juicy.";
newstr=str.replace(re, "oranges");
document.write(newstr)
/SCRIPT
結(jié)果是:"oranges are round, and oranges are juicy."
例:
SCRIPT
str = "Twas the night before Xmas...";
newstr=str.replace(/xmas/i, "Christmas");
document.write(newstr)
/SCRIPT
結(jié)果是:"Twas the night before Christmas..."
例:
SCRIPT
re = /(\w+)\s(\w+)/;str = "John Smith";
newstr = str.replace(re, "$2, $1");
document.write(newstr)
/SCRIPT
結(jié)果是:"Smith, John".
2、search
search通過正則表達(dá)式查找相應(yīng)的字符串,只是判斷有無匹配的字符串。如果查找成功,search返回匹配串的位置,否則返回-1。
search(regexp)
SCRIPT
function testinput(re, str){
if (str.search(re) != -1)
midstring = " contains ";
else
midstring = " does not contain ";
document.write (str + midstring + re.source);
}
testinput(/^[1-9]/i,"123")
先在WORD等環(huán)境中輸入特殊字符,然后,復(fù)制-粘貼,到VB代碼窗口里。
Dim da As String = "SELECT Count(檢測項(xiàng)目) FROM b where 檢測項(xiàng)目='cc'"
這句寫錯(cuò)啦,你直接傳送的是檢測項(xiàng)目為字符串"cc"的參數(shù),并不是你程序?qū)懙腃C參數(shù)
改為:
Dim da As String = "SELECT Count(檢測項(xiàng)目) FROM b where 檢測項(xiàng)目='" cc "'"
建議通過程序組織的sql語句可以通過msgbox da 彈出來看看,這樣你較容易查出是什么錯(cuò)誤,較長的就用textbox1.text=da來看了,不過記得設(shè)置斷點(diǎn)"exit sub"
使用ACCESS數(shù)據(jù)庫的日期列比較,應(yīng)為:
"select * from 表 where 日期列=" "#" cdate(textbox1.text) "#"
注意前后兩個(gè)“#”號(hào)
使用sqlserver
"select * from 表 where 日期列=" "'" cdate(textbox1.text) "'"
當(dāng)然日期格式要注意,如長短日期等。
日期期間:between 小日期 and 大日期(記得加#號(hào))
你可在需輸入特殊字符時(shí)啟動(dòng)WORD,利用WORD的插入(I)菜單下的符號(hào)(S)或特殊符號(hào)(Y)內(nèi),找到你需的特殊字符,臨時(shí)放于WORD文本上,用復(fù)制粘貼法放入VB的代碼內(nèi),例:
Option Explicit
Dim i As Integer
Private Sub Form_Load()
For i = 0 To 1
Print "√"
Next i
End Sub
應(yīng)該是在這兩行前面加空格:
AND AC95.BAE415 '999'
AND AAE140 = '11'
語句改成如下看看:SELECT AAC003 姓名,AAC002 身份證號(hào)碼,(SELECT DISTINCT FIRST_VALUE(AIC263) OVER(PARTITION BY AAC001 ORDER BY AAE002 DESC) FROM ASSI.AC95 WHERE AC95.AAE117 = '1' AND AC95.BAE415 '999' AND AAE140 = '11'
如果有問題你把數(shù)據(jù)的表結(jié)構(gòu)發(fā)過來看一下,我?guī)湍阍俨橐幌耂QL語句是否有問題。