2013-05-16 30 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