Parser Business Rule

TyeshaAdams
New Contributor III

I am trying to write a parser business rule to give the portion of a string that begins with US and the 6 characters after from a data source.

For example, the imported line reads "mmmmmmmmmUSxxxxxxmmmmmmm" and I want to parse out USxxxxxx to which is mapped in the transformation rules.  I also need it to be dynamic because the line will not always be in the same character place.  It could also be "mmmmmUSxxxxxxmmm" or anywhere else within the text.  I have tried using the rule below but it is not bringing back any values.  The import is reflecting "blank."

 

Dim sText As String = args.Value

Dim result As String = ""

If sText.Contains("US") Then

     result = sText.Substring(sText.IndexOf("US"),8)

End If

Return result

 

4 REPLIES 4

SH_INT
Contributor

Hi,

The code is sound so issue must be that the If statement is evaluating to False. Add a debug statement to output the value of sText to the Error Log to see the string that is being evaluated.

Regards.

SH 

MarcusH
Contributor III

I would use XFContainsIgnoreCase rather than the standard VB Contains.

If sText.XFContainsIgnoreCase("US") Then

 

It won't make a difference to this script as the source is already upper case but it's a good practice to get into.

Secondly I agree with @SH_INT that a debug of some sort is needed as the code looks OK. I would have an Else statement such as:

If sText.XFContainsIgnoreCase("US") Then
    result = sText.Substring(sText.IndexOf("US"),8)
Else
    result = $"Text [{sText}] does not contain US"
End If

 

ChristianW
Valued Contributor

You should have a look at regular expressions. It is a little cryptic but very powerful. Microsoft provides all the information you need to parse complex strings.

TyeshaAdams
New Contributor III

Thanks everyone for your help!  It is now working as expected.