2013-05-16 5 views
0

У меня есть простая функция, которая проверяет текст на странице. Сначала он проверяет, имеет ли конкретный аргумент значение, если так, то он выполняет код, иначе он выйдет из функции.VBScript: Найти переменную в аргументе

Пример:

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

Переменные точки С к DataTable, которые могут содержать или не содержать значение. Функция работает нормально, если C является единственным значением параметра. Проблема у меня есть время от времени возникает необходимость иметь некоторую форму статического текста сцепленного с C, как:

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

В приведенном выше примере, optC всегда имеет значение TRUE, поскольку строка «Jibberish» найден. Я ищу способ игнорировать любую строку и проверять, действительно ли фактическая переменная C пуста перед выполнением кода. Предложения?

+0

обрезать статический текст или, еще лучше, поместить его в свой собственный параметр. – jbabey

+0

Я думал об обрезке статического текста, но этот текст отличается для каждой ситуации. Можно использовать ck (A, B, «Тестирование» и C), в то время как для следующего использования может потребоваться ck (A, B, «Тестирование, Тестирование, 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) 

Если «статический» текст также переменный и у вас нет способ дифференциации между 2 частями optC, тогда вы не можете сделать это, не адаптируя свою вызывающую функцию, в этом случае просто добавьте параметр, чтобы вы могли проверить, нет ли одного из них.

EDIT: я думаю, что ваш лучший вариант - выполнить поиск и заменить достойным редактором (Sublime Text или что-то в этом роде) и выполнить поиск с регулярным выражением для ck (A, B, "xxxxxxxx" & C) и сделать замените на ck (A, B, «xxxxxxxx |» & C) (замените «&» на «|» & ', адаптируйте функцию ck, проверив специальный символ | (или любой другой), поэтому вы видите, является ли это последним символом или нет, и должна ли выполняться функция или нет. Такой поиск и замена могут быть выполнены по нескольким сценариям, если это необходимо, успех!

+0

Эта функция используется многими в разных сценариях. Иногда строка включается, а иногда просто переменная. Я искал способ сделать его универсальным. Моя первоначальная мысль состояла в том, чтобы проверить, было ли обнаружено «&», а затем извлечь любое имя переменной до/после &, но я не могу заставить это работать, поскольку любое сравнение, которое я делаю с аргументом, не видит &, только строка в сочетании с значением переменной. – Nick

+0

, пожалуйста, опубликуйте пример того, как вы вызываете функцию, & является оператором для объединения двух строк вместе, не переадресовывает ли функция, только конкатенированная строка – peter

Смежные вопросы