Search code examples
stringsplitdataweaveanypoint-studio

Split large string in n-size chunks in Mulesoft or DataWeave


I've to split a string let say having charachter size 100 to n-chunks of fixed length (in my case it's 10 character). Last chunk may contain remaning harachters.

This I've to do it in DataWeave mapping.

input:

{
    "msg": "Hello world!",
    "str" : "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIG5vbiBvcmNpIHNlZCBsb3JlbSBjb25ndWUgbWF0dGlzIHNpdCBhbWV0IHV0IG51bGxhLiBTZWQgYWxpcXVhbSBjb25zZXF1YXQgbWFsZXN1YWRhLiBQZWxsZW50ZXNxdWUgdWx0cmljaWVzIG9kaW8gc2VtLCBhdCBjb25ndWUgZHVpIHBoYXJldHJhIHVsdHJpY2llcy4gTW9yYmkgc2l0IGFtZXQgc2VtIHZvbHV0cGF0LCB2b2x1dHBhdCBsYWN1cyB2ZWwsIGRhcGlidXMgbGFjdXMuIEludGVyZHVtIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cy4gTWF1cmlzIGltcGVyZGlldCBlc3QgYXQgbnVsbGEgcGVsbGVudGVzcXVlLCBxdWlzIG1vbGVzdGllIGxhY3VzIHRlbXBvci4gU2VkIGV1aXNtb2QgZGFwaWJ1cyBudW5jIGV1IHBvc3VlcmUuIFNlZCBzZWQgcHVydXMgYXVjdG9yLCBwZWxsZW50ZXNxdWUgc2FwaWVuIHF1aXMsIGltcGVyZGlldCB1cm5hLg0KDQpDdXJhYml0dXIgYXVndWUgZG9sb3IsIHZvbHV0cGF0IHZpdGFlIHB1cnVzIGV0LCBpYWN1bGlzIGFjY3Vtc2FuIG1hZ25hLiBWZXN0aWJ1bHVtIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzIG9yY2kgbHVjdHVzIGV0IHVsdHJpY2VzIHBvc3"
}

output should look like :

[{
    "msg": "Hello world!",
    "line": "<first 10 charachters>"
},
{
    "msg": "Hello world!",
    "line": "<2nd 10 charachters>"
},
...
{
    "msg": "Hello world!",
    "line": "<remaining charachters>"
}]

Solution

  • There is a similar solution here Mulesoft 3 DataWeave - split a string by an arbitrary length

    Basically you need

    payload.str scan /.{1,10}/ map {
                msg: payload.msg,
                str: $[0]
            }