问题描述
我必须将字符串大小为100的字符串拆分为固定长度的n个块(在我的情况下为10个字符)。最后一块可能包含发还骚扰者。
输入:
{
"msg": "Hello World!","str" : "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIG5vbiBvcmNpIHNlZCBsb3JlbSBjb25ndWUgbWF0dGlzIHNpdCBhbWV0IHV0IG51bGxhLiBTZWQgYWxpcxvhbSBjb25zZXF1YXQgbWFsZXN1YWRhLiBQZWxsZW50ZXNxdWUgdWx0cmljaWVzIG9kaW8gc2VtLCBhdCBjb25ndWUgZHVpIHBoYXJldHJhIHVsdHJpY2llcy4gTW9yYmkgc2l0IGFtZXQgc2VtIHZvbHV0cGF0LCB2b2x1dHBhdCBsYWN1cyB2ZWwsIGRhcGlidXMgbGFjdXMuIEludGVyZHVtIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cy4gTWF1cmlzIGltcGVyZGlldCBlc3QgYXQgbnVsbGEgcGVsbGVudGVzcxvlLCBxdWlzIG1vbGVzdGllIGxhY3VzIHRlbXBvci4gU2VkIGV1aXNtb2QgZGFwaWJ1cyBudW5jIGV1IHBvc3VlcmUuIFNlZCBzZWQgcHVydXMgYXVjdG9yLCBwZWxsZW50ZXNxdWUgc2FwaWVuIHF1axmsIGltcGVyZGlldCB1cm5hLg0KDQpDdXJhYml0dXIgYXVndWUgZG9sb3IsIHZvbHV0cGF0IHZpdGFlIHB1cnVzIGV0LCBpYWN1bGlzIGFjY3Vtc2FuIG1hZ25hLiBWZXN0aWJ1bHVtIGFudGUgaXBzdW0gcHJpbWlzIgluIGZhdWNpYnVzIG9yY2kgbHVjdHVzIGV0IHVsdHJpY2VzIHBvc3"
}
输出应类似于:
[{
"msg": "Hello World!","line": "<first 10 charachters>"
},{
"msg": "Hello World!","line": "<2nd 10 charachters>"
},...
{
"msg": "Hello World!","line": "<remaining charachters>"
}]
解决方法
Mulesoft 3 DataWeave - split a string by an arbitrary length
也有类似的解决方案基本上您需要
payload.str scan /.{1,10}/ map {
msg: payload.msg,str: $[0]
}