Skip to main content
August 16, 2024
Solved

Parser Business Rule

  • August 16, 2024
  • 4 replies
  • 0 views

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

 

Best answer by ChristianW

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.

4 replies

August 18, 2024

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 

August 19, 2024

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 SimonHesford 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

 

August 19, 2024

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.

August 20, 2024

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