The OneStream Community is temporarily frozen until June 29th due to the ongoing maintenance. Please read the blog post here to learn more.

Forum Discussion

TyeshaAdams's avatar
TyeshaAdams
New Contributor III
1 year ago
Solved

Parser Business Rule

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

 

  • 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

  • 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's avatar
    MarcusH
    Valued Contributor

    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

     

  • ChristianW's avatar
    ChristianW
    Icon for OneStream Employee rankOneStream Employee

    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's avatar
    TyeshaAdams
    New Contributor III

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