2013-05-22 3 views
2

У меня есть функция vbscript, которая требует сравнения строк, где одна/обе строки могут содержать подстановочный знак. К сожалению, strcomp("string1","string.*")=0 не работает для меня, поскольку он выполняет сравнение и видит подстановочный знак регулярного выражения .* как литерал, а не подстановочный знак.VBS Сравнение строк с использованием подстановочных знаков

Как мне сравнить две строки, в которых один и/или оба содержат подстановочный знак?

Функция:

Function webtableCheck(pageName, tableProperty, rowNum, colNum, checkValue) 
    Dim x, y, oD, oC 
    x = split(tableProperty,":=") 
    If checkValue <> "" Then 
     Set oD = description.Create 
     oD("micclass").value = "WebTable" 
     oD(x(0)).value = x(1) 
     Set oC = pageName.childobjects(oD) 
     y = oC(0).getcelldata(rowNum, colNum) 
     msgbox(y) 
     If y=checkValue Then 
      reporter.ReportEvent micPass, "WebTable Checkpoint", "The webtable checkpoint object """ & checkValue & """ was found." 
     Elseif **strcomp(y,checkValue,1)** = 0 Then 
      reporter.ReportEvent micPass, "WebTable Checkpoint", "The webtable checkpoint object """ & checkValue & """ was found, however the casing does not match." 
     Elseif strcomp(trim(y),trim(checkValue)) = 0 Then 
      reporter.ReportEvent micPass, "WebTable Checkpoint", "The webtable checkpoint object """ & checkValue & """ was found, however leading/lagging spaces not included in datatable and/or webtable cell was found." 
     Elseif instr(1,y,checkValue,1) Then 
      reporter.ReportEvent micPass, "WebTable Checkpoint", "The webtable checkpoint object """ & checkValue & """ was found., however a line break or other hidden character was found in the webtable." 
     Else 
      reporter.ReportEvent micFail, "WebTable Checkpoint", "The webtable checkpoint object """ & checkValue & """ was not found." 
     End If 
    End If 
End Function 

ответ

5

Вы должны использовать регулярное выражение, вот пример.

line = "this is the text to look in to, it contains the searchpattern" 
Set RE = New RegExp 
RE.IgnoreCase = True 
RE.Pattern = "search.*tern" 
If RE.Test(Line) Then WScript.echo "found" 

The. * Является регулятором,. обозначает любой символ, * означает отсутствие или множественные вхождения предыдущего, вы также можете использовать. + здесь, где + meanbs по крайней мере одно появление. Вы можете найти множество примеров и источник материалов о регулярных выражениях в Интернете, учитывать только тот факт, что Vbscript использует нестандартную форму, поэтому не забудьте включить это в свой поиск.

http://www.mikesdotnetting.com/Article/24/Regular-Expressions-and-VBScript

http://www.regular-expressions.info/vbscriptexample.html

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