preload

Service Functions – String (QTP, VBScript)

Posted by Albert Gareev on Oct 01, 2009 | Categories: Function libraryText Data

In the code examples I present I often refer to routine functions.

In my framework I have specialized libraries to call from.  In my blog I maintain the similar structure.

Matching string with a pattern (Regular Expression, RegEx)

Public Function Regex_Test(ByVal strSrc, ByVal strRegEx)
 Dim objRegEx
 Dim boolRC, intRC

 Set objRegEx = New RegExp 
 objRegEx.Pattern = strRegEx

 On Error Resume Next
 boolRC = objRegEx.Test(strSrc)
 intRC = Err.Number
 On Error GoTo 0
 If intRC <> 0 Then boolRC = False

 Set objRegEx = Nothing
 Regex_Test = boolRC
End Function

 

Public Function Regex_Match(ByVal sSource, ByVal sPattern, ByVal intIndex, ByVal boolMatchCase)
  Dim objRegExp, objMatchColl
  Dim boolRC, intRC

 If intIndex < 0 Then
  intIndex = 0
 End If

 Set objRegExp = new RegExp
 objRegExp.Global = TRUE
 objRegExp.IgnoreCase = Not boolMatchCase
 objRegExp.Pattern = sPattern

 On Error Resume Next
 boolRC = objRegExp.Test(sSource)
 intRC = Err.Number
 On Error GoTo 0
 If intRC <> 0 Then boolRC = FALSE

 If Not boolRC Then
    Set objRegExp = Nothing
  Regex_Match = ""
  Exit Function
 End If

 Set objMatchColl = objRegExp.Execute(sSource)

 If (intIndex+1) > objMatchColl.Count  Then
    Set objMatchColl = Nothing
    Set objRegExp = Nothing
  Regex_Match = ""
  Exit Function
 End If

 Regex_Match = objMatchColl.Item(intIndex).Value

  Set objMatchColl = Nothing
  Set objRegExp = Nothing
  
End Function

Replace pattern(s) in a string

Public Function ReplaceEx(ByVal sSource, ByVal sPattern, ByVal sDest, ByVal boolMatchCase)
  Dim objRegExp
 
  If sPattern = "" Then
    ReplaceEx = sSource
    Exit Function
  End If
 
 Set objRegExp = new RegExp
 objRegExp.Global = TRUE
 objRegExp.IgnoreCase = Not boolMatchCase
 objRegExp.Pattern = sPattern

 ReplaceEx = objRegExp.Replace(sSource, sDest)

 Set objRegExp = Nothing

End Function

Number conversion and initialization with a default value


Public Function IntVal(ByVal sVal)
   If isNumeric(sVal) Then
    IntVal = CLng(sVal)
 Else
  IntVal = 0
   End If
End Function

 


Public Function InitLong(ByVal sActualValue, ByVal DefaultValue)
 DefaultValue = IntVal(DefaultValue)
  
 If sActualValue = "" Then
  InitLong = DefaultValue
 Else
    If isNumeric(sActualValue) Then
     InitLong = CLng(sActualValue)
  Else
   InitLong = DefaultValue
    End If
 End If
End Function

Initialize string with a default value


Public Function InitValue(ByVal sActualValue, ByVal DefaultValue)
 If sActualValue = "" Then
  InitValue = DefaultValue
 Else
  InitValue = sActualValue
 End If
End Function

Initialize boolean with a default value


Public Function InitBool(ByVal sActualValue, ByVal boolDefaultValue)
  
   sActualValue = UCase(sActualValue)

   Select Case boolDefaultValue
   Case TRUE
   'By default set to TRUE
   'Set to FALSE if explicitely defined
     If (sActualValue = "FALSE") OR (sActualValue = "NO") Then
      InitBool = FALSE
     Else
      InitBool = TRUE
     End If
   Case FALSE
   'By default set to FALSE
   'Set to TRUE if explicitely defined
     If (sActualValue = "TRUE") OR (sActualValue = "YES") Then
      InitBool = TRUE
     Else
      InitBool = FALSE
     End If
   End Select

End Function

Questions / Answers

How to trim words inside a text line (QTP, VBScript)

How to wrap text line (QTP, VBScript)

Inserting breaks into text line

Additional Functions

GetTokenByNumber

GetTokenByKeyword


  • 2 responses to "Service Functions – String (QTP, VBScript)"

  • Jill
    9th February 2010 at 9:47

    Hi Albert!

    Can you email me a QTP function that wraps line of text without breaking words?

    Thank you!

    [ Albert’s reply.
    I actually didn’t have that function in my QTP libraries. Enjoyed working on this little exercise :)
    Here we go: How to wrap text line ]

  • Raj
    10th February 2010 at 12:01

    hello,

    What QTP function i can use to trim inside string? For e.g. “text text text text” – i want only 1 space between.

    Thanks!

    [ Albert’s reply.
    Raj, there is no such function but you can easily implement that in a variety of ways. Choose best for your context.
    Sample solutions are here: How to trim words inside a text line ]

Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported
This work by Albert Gareev is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported.