IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.


#TechXchangePresenter
 View Only
Expand all | Collapse all

Help create java service pubstringindexOf

  • 1.  Help create java service pubstringindexOf

    Posted Fri July 12, 2002 10:39 PM

    I am using B2B server v3.6. I need the service pub.string.indexOf, which I fuess is not available with 3.6, but a later version. I tried to manipulate the other string services, but was unusccessful. This seems like a pretty simple service. Is there a way I can get the code for this one service, without upgrading to a higher version?

    I am trying to take a string, search for a set group of characters, and return the group of characters if it found.

    in string: 12345abc4321
    search for ‘abc’ if found, return ‘abc’, if not, return null (or -1). Tha


    #webMethods
    #Flow-and-Java-services
    #Integration-Server-and-ESB


  • 2.  RE: Help create java service pubstringindexOf

    Posted Fri July 12, 2002 10:46 PM

    Hi Brian,
    You can write your own Java Service to do that. After all webMethods gives a Java service for that.


    #webMethods
    #Flow-and-Java-services
    #Integration-Server-and-ESB


  • 3.  RE: Help create java service pubstringindexOf

    Posted Fri July 12, 2002 10:55 PM

    Revised…

    I DO have the indexOf service, but that doesn’t extract the portion of the string.

    Any thoughts?


    #Flow-and-Java-services
    #Integration-Server-and-ESB
    #webMethods


  • 4.  RE: Help create java service pubstringindexOf

    Posted Fri July 12, 2002 11:58 PM

    Brian,
    I am confused.
    indexOf will only give you the index of the occurance of search string. That service will not extract it. You should use substring service to extract it by passing the results of indexOf to subString service.
    Hope I am understanding your issue.


    #Flow-and-Java-services
    #webMethods
    #Integration-Server-and-ESB


  • 5.  RE: Help create java service pubstringindexOf

    Posted Sat July 13, 2002 12:06 AM

    Yeah, that is the correct assumption. For some reason, I thought I didn’t have the indexOf service. After I realized I did have it, I used the indexOf service to get the start of the string, then used substring service to get the value. So that part is good.

    Another question. I want to extract something like #$$$$#$, where # = a number value, and $ = a letter value (so I am just looking for the number/letter pattern, not specific values). Do you know how I would go about doing this? I know there are similar values for manipulating time using characters, but I am not aware of anything for letter/number values.

    Any thought?


    #Flow-and-Java-services
    #webMethods
    #Integration-Server-and-ESB


  • 6.  RE: Help create java service pubstringindexOf

    Posted Sat July 13, 2002 12:11 AM

    Brian,

    You want to use Regular Expressions. There is an appendix at the back of the WM developer manual that covers this. Plus, any good java book will provide you with the answer. It allows for pattern matching.

    Ray


    #Flow-and-Java-services
    #Integration-Server-and-ESB
    #webMethods


  • 7.  RE: Help create java service pubstringindexOf

    Posted Sat July 13, 2002 12:12 AM

    Need more real life examples…for your second question.


    #webMethods
    #Flow-and-Java-services
    #Integration-Server-and-ESB


  • 8.  RE: Help create java service pubstringindexOf

    Posted Sat July 13, 2002 12:14 AM

    I totally agree with Ray. Way to go is regular expressions for search string.


    #Flow-and-Java-services
    #webMethods
    #Integration-Server-and-ESB


  • 9.  RE: Help create java service pubstringindexOf

    Posted Mon July 15, 2002 07:43 PM

    Thanks, I think I can probably work something out with those regular expressions. I am just having a hard time using them. I tried to do the sample {doc.p[/web.ethods/].text} but can’t get that to work.

    I am using the indexOf service. The in string would be a field where someone would type in a part number, but might also type in some additional text. The field can also be blank. I then made the substring {doc.p[/web.ethods/].text}.

    So the idea here is that I would input the string containing the part number values, check for the first occurance of the substring within that string (if it does occur), add 5 charcaters to the beginning index (for the length of the part number), then extract the part number and map it to the appropriate field.

    I am getting a -1 (not finding the string) for this. Any thoughts?


    #Integration-Server-and-ESB
    #Flow-and-Java-services
    #webMethods


  • 10.  RE: Help create java service pubstringindexOf

    Posted Mon July 15, 2002 08:57 PM

    I am getting nothing…
    /\d\w\d\d\d/ and
    \d\w\d\d\d

    That should be the correct expressions for number only (\d) and alphanumeric (\w). I am not getting any value returned???


    #webMethods
    #Flow-and-Java-services
    #Integration-Server-and-ESB


  • 11.  RE: Help create java service pubstringindexOf

    Posted Mon July 15, 2002 09:19 PM

    I think we’re all mixing things a little bit here. Let’s see if I understand what we’re trying to solve.

    First, there was this question:

    Given a string 12345abc4321, extract abc

    This can be done using pub.string:indexOf, a branch step and pub.string:substring. Neither of these services support regular expressions, so don’t try to pass a regular expression. You can only search for one substring at a time at it must be an exact match to get a hit.

    Second, there was a follow-up:

    Given a string of the form #$$$$#$, where # = a number value, and $ = a letter value, extract the $$$$ portion.

    Regular expressions within FLOW will work if you’re only interested in matching the pattern. You specify a branch step, and then for the labels you specify the regular expression you want to match for the leg of the branch to be taken. For example:

    branch on /aString
    – /.+/: MAP (aString has one or more characters)
    – /^SE/: MAP (aString starts with SE)
    – /^.{2,3}$/: MAP (aString is any 2 or 3 char string)
    – 1: MAP (aString is 1)
    – $default: MAP (aString doesn’t match any of the above)

    Note that to use a regular expression in a label, you surround the expression with slashes. Do not use the curly braces or the doc.p prefix you show in your example–that syntax is for use within HTML (dsp) pages.

    My guess is that using regular expressions within FLOW step labels will not do what you need–they only indicate a pattern match, they don’t extract any parts of the input string.

    The quickest way to get what you need is probably to write a Java service that does what you need. Loop over the characters in the string until you hit the first letter, record the index, continue til you hit a number or end of string and record the end index. Then use String.substring() to get the substring and return it in the pipeline.

    Hope this helps.


    #Flow-and-Java-services
    #Integration-Server-and-ESB
    #webMethods


  • 12.  RE: Help create java service pubstringindexOf

    Posted Wed April 23, 2008 05:26 PM

    Hi gurus,

    I am trying to find out a regular exp syntax to search for a particular word in the string…

    Any ideas for the syntax please??

    TIA,
    RMG


    #Integration-Server-and-ESB
    #Flow-and-Java-services
    #webMethods


  • 13.  RE: Help create java service pubstringindexOf

    Posted Wed April 23, 2008 06:23 PM

    To find if “foo” exists within a string, do this:

    BRANCH on myVar
    /foo/: MAP
    $default: MAP (no foo in myVar)

    If myVar contains, “foobar”, “sofoobar” or “barfoo”, the /foo/ branch will be executed.


    #Flow-and-Java-services
    #webMethods
    #Integration-Server-and-ESB


  • 14.  RE: Help create java service pubstringindexOf

    Posted Wed April 23, 2008 06:52 PM

    Thanks Rob…I have put the exact same syntax and it worked…

    /FileName/

    some how my mind is not with me today

    HTH,
    RMG


    #Flow-and-Java-services
    #webMethods
    #Integration-Server-and-ESB