本帖最后由 todaynew 于 2011-6-20 14:43 編輯
江羽版主最近在研究拼音聲調(diào)字符轉(zhuǎn)換為字母的問(wèn)題,連續(xù)用了兩種方法,其一是數(shù)組法,其二是字符串法。這個(gè)問(wèn)題我也曾用過(guò)一個(gè)數(shù)據(jù)表法,說(shuō)明解決此類問(wèn)題的辦法很多。結(jié)合這個(gè)問(wèn)題,想講一下Replace函數(shù)的嵌套問(wèn)題。由于沒(méi)有依賴其他的輔助手段,比較起來(lái)可以稱之為裸奔法。
許多函數(shù)都是可以嵌套使用的,比如iif函數(shù)、instr函數(shù)等等。Replace函數(shù)也是可以嵌套使用的,Replace的嵌套執(zhí)行的是連續(xù)的不同替換。只要你愿意可以嵌套很多層,不過(guò)為了閱讀的方便起見(jiàn),一般可以順序的用幾次Replace嵌套來(lái)解決替換問(wèn)題。比如拼音聲調(diào)字符轉(zhuǎn)換為字母的問(wèn)題,我們可以寫(xiě)如下自定義函數(shù):
function str1(str0 as string) as string
'功能:將拼音聲調(diào)字符轉(zhuǎn)換為字母
str1=str0
str1=Replace(Replace(Replace(Replace(str1,"ā","a"),"á","a"),"ǎ","a"),"à","a")
str1=Replace(Replace(Replace(Replace(str1,"ē","e"),"é","e"),"ě","e"),"è","e")
str1=Replace(Replace(Replace(Replace(str1,"ī","i"),"í","i"),"ǐ","i"),"ì","i")
str1=Replace(Replace(Replace(Replace(str1,"ō","o"),"ó","o"),"ǒ","o"),"ò","o")
str1=Replace(Replace(Replace(Replace(str1,"ū","u"),"ú","u"),"ǔ","u"),"ù","u")
str1=Replace(Replace(Replace(Replace(str1,"ǖ","v"),"ǘ","v"),"ǚ","v"),"ǜ","v")
end function
這個(gè)函數(shù)的編制方法可以用到許多方面,如果你想將阿拉伯?dāng)?shù)字轉(zhuǎn)換為中文數(shù)字,也是可以用此方法加以解決的,我們可以編寫(xiě)如下的自定義函數(shù):
function str1(str0 as string,B as boolean) as string
'功能:將阿拉伯?dāng)?shù)轉(zhuǎn)換為中文字符
'參數(shù):B=true 轉(zhuǎn)換為一、二... B=False 轉(zhuǎn)換為壹、貳...
str1=str0
select case B
case true
str1=Replace(Replace(Replace(Replace(str1,"0","0"),"1","一"),"2","二"),"3","三")
str1=Replace(Replace(Replace(Replace(str1,"4","四"),"5","五"),"6","六"),"7","七")
str1=Replace(Replace(str1,"8","八"),"9","九")
case false
str1=Replace(Replace(Replace(Replace(str1,"0","零"),"1","壹"),"2","貳"),"3","叁")
str1=Replace(Replace(Replace(Replace(str1,"4","肆"),"5","伍"),"6","陸"),"7","柒")
str1=Replace(Replace(str1,"8","捌"),"9","玖")
end select
end function
假如你認(rèn)為運(yùn)算符輸出不美觀,也可以用這個(gè)方法來(lái)編寫(xiě)一個(gè)自定義的轉(zhuǎn)換函數(shù):
function str1(str0 as string) as string
'功能:將運(yùn)算符轉(zhuǎn)換為輸出格式
str1=str0
str1=Replace(Replace(Replace(Replace(str1,"+","+"),"-","-"),"*","×"),"/","÷")
str1=Replace(Replace(Replace(Replace(str1,"=","="),"<>","≠"),"<=","≤"),">=","≥")
str1=Replace(Replace(str1,"<","<"),">",">")
end function
如此等等,你可以按照你的需要,依據(jù)此法寫(xiě)出很多實(shí)用功能很強(qiáng)的自定義函數(shù)來(lái)了。通過(guò)這個(gè)講座,希望能使初學(xué)的版友明白,很多時(shí)候自定義函數(shù)就是一兩句VB語(yǔ)句,關(guān)鍵看你是否真正掌握和理解了它們。掌握和理解了,就能在多種方法中找到最簡(jiǎn)單最直接的那些東西。
|