2013-05-16 80 views
0

我有一個簡單的函數來檢查頁面上的文本。它首先檢查特定參數是否有值,如果是,則執行代碼,否則退出該函數。VBScript:在參數中查找變量

實施例:

Function ck(reqA,reqB,optC) 
IF optC <> "" Then 
...run code 
End If 
End Function 
ck(A,B,C) 

變量c指向可以或可以不包含一個值的DataTable。如果C是參數中唯一的值,則該函數可以正常工作。我遇到的問題是偶爾有需要有某種形式的串聯到C像靜態文本:

ck(A,B,"Jibberish " & C) 

在上面的例子中,由於OPTC字符串「Jibberish」發現結果始終爲true。我正在尋找一種方法來忽略任何字符串,並且只在執行代碼之前檢查實際變量C是否爲空。建議?

+0

修剪掉靜態文本,或者更好的是將它放在它自己的參數中。 – jbabey

+0

我想過修剪靜態文本,但是這個文本對於每種情況都是不同的。可以使用ck(A,B,「Testing」和C),而下一次使用可能需要ck(A,B,「Testing,Testing,1,2,」&C)。有什麼辦法可以將參數optC的內容區分爲字符串和變量嗎?額外的參數將是理想的,但它需要對功能的現有調用進行太多更改。 – Nick

+1

編號'「foo」&C'連接到一個字符串,然後分配給'optC'。函數無法知道其中一個參數的價值是如何發生的。 –

回答

1

要麼提供的靜態文本在接收功能像

Function ck(reqA,reqB,optC) 
IF optC <> "" Then 
optC = "jibberish " & optC 
End If 
End Function 
ck(A,B,C) 

或檢查是否有隻有靜態文本

Function ck(reqA,reqB,optC) 
IF optC > "jibberish " Then 
...run code 
End If 
End Function 
ck(A,B,C) 

如果「靜態」的文字也是可變的,你有沒有區分optC的2個部分的方法,那麼如果不調整您的調用函數,您無法做到這一點,在這種情況下只需添加一個參數,以便您可以檢查其中一個是否爲空

編輯:我認爲你最好的選擇是做一個搜索,並用一個體面的編輯器(崇高的文本或類似的東西)取代並用正則表達式搜索ck(A,B,「xxxxxxxx」& C)並做一個用ck替換(A,B,「xxxxxxxx |」& C)(用'|「&'替換''&'',通過檢查特殊字符來調整ck函數| (或任何其他),以便您瞭解這是否是最後一個字符以及是否需要執行該功能。這樣的搜索和替換可以通過多個腳本完成,如果有必要,成功!

+0

這個功能被許多不同的場景使用。有時會包含一個字符串,其他時候只是一個變量。我正在尋找一種使其具有普遍性的方法。我最初的想法是檢查一個「&」是否被找到,然後在&之前/之後提取任何變量名稱,但我似乎無法得到這個工作,因爲任何比較我做的參數沒有看到&,只有字符串結合變量值。 – Nick

+0

可以肯定的,請發佈一個你如何調用函數的例子,&是將兩個字符串連接在一起的操作符,是不是轉發給函數,只有連接字符串 – peter