0
votes

I am trying to trim characters in dataweave using trim function

input: "C#-01-20875 DB_GDTest"

How can i trim until the space in the above string

code am using is below

%dw 2.0
output application/json
var ab = "C##-01-20875  DB_GDTest" as String
---
trim(ab)

Expected output is "C##-01-20875"

how can i achieve this?

2

2 Answers

2
votes

Every trim() function in every language I ever heard of removes spaces at both ends of the string, not in the middle. What you want is a function to remove everything after the first space. I recommend to create your own custom function for that.

If you are using Mule 4.2.0 or greater I recommend to use the substringBefore() function:

%dw 2.0
output application/json
import * from dw::core::Strings
var ab = "C##-01-20875  DB_GDTest" as String
fun removeFromSpace(s)=substringBefore(s, " ")
---
removeFromSpace(ab) 

For Mule 4.1 you can use regular expressions to achieve the same result, but probably it is less efficient:

%dw 2.0
output application/json
var ab = "C##-01-20875  DB_GDTest" as String
fun removeFromSpace(s)=s replace /\s.*/ with("")
---
removeFromSpace(ab) 

Or see @olamiral version for a different approach.

1
votes

You can try the following DataWeave expression:

%dw 2.0
output application/json
var ab = "C##-01-20875  DB_GDTest" as String
---
splitBy(ab, " ")[0]