It’s a fairly common requirement to be able to extract text from a larger string.
Using Mendix, the easiest way I’ve found to do this is using the RegexReplaceAll Java action from the Community Commons module.
We use a regular expression extract the text, then return this selected text in the action.
For example, take the following string returned from the Nexmo SMS module.
--------- part [ 1 ] ------------Status [ 9 ] ...SUBMISSION FAILED!Message-Id [ null ] ...Error-Text [ Quota Exceeded - rejected ] ...Message-Price [ 0.03330000 ] ...Remaining-Balance [ 0.03200000 ]
If we want to extract the Error-Text we can use the following regular expression.
^.*Error-Text \[ (.*?) \].*$
Here we’re saying look for the text between the square brackets after the string Error-Text. We use round brackets to say we want to remember this matched text. We can then use the regular expression match position to return the matched text – in this case $1.
If we run this over our string we get the following
Quota Exceeded - rejected
To use this in a Mendix microflow, assume we have our status message in a String $StatusMessage that we pass into the Java action. This is our Haystack.
Next, we use the regular expression as a String for our Needle regex.
Finally, we say we want $1 as a String to be our Replacement.
We return the String as $Details.
This is what the microflow and action should look like.