Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
362 views
in Technique[技术] by (71.8m points)

Trim characters in Mule4 using Dataweave

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?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...