Skip to main content
Newcomer
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

Newcomer
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 

Expert
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

 

OneStream Employee
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.

Newcomer
August 20, 2024

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