如何解决如何在Dataweave中按字符数拆分字符串
嗨,我在 Dataweave 中找不到按指定长度拆分字符串的函数。
我需要拆分的字符串是
ThisistheStringineedtoSplit
预期输出是一个包含所有子串的数组
payload.splitBy(sizeOf(payload)/10)
[ThisistheString,ineedtoSplit]
解决方法
我们可以使用递归函数以及围绕字符串索引的内置功能。使用字符串,您可以像 [0 to end]
一样轻松地选择子字符串。要获得字符串的其余部分,您可以执行 [end to -1]
。使用负索引会从后面转换为索引,因此 -1 将是最后一个字符。由于这是一个零索引,我们抓取 [0 to size - 1]
以获得正确数量的字符,然后在 [size to -1]
上再次递归调用。
%dw 2.0
output application/json
fun divideBy(str: String,size: Number): Array<String> =
if (sizeOf(str) <= size) [str]
else [str[0 to size - 1]] ++ divideBy(str[size to -1],size)
var message = "ThisistheStringineedtoSplit"
---
message divideBy 10
输出:
[
"ThisistheS","tringineed","toSplit"
]
在您的示例输出中,子字符串的长度超过 10 个字符。这是一个错误,还是我误解了你想要什么?
编辑:
你也可以用一些正则表达式来做到这一点,尽管我认为这里没有任何真正的好处..我昨天刚好在一次谈话中想到了正则表达式。
%dw 2.0
output application/json
fun divideBy(str: String,size: Number): Array<String> =
flatten(str scan ".{1,$(size)}")
var message = "ThisistheStringineedtoSplit"
---
message divideBy 10
,
这是另一种方法
%dw 2.0
import * from dw::core::Arrays
output application/json
var myStringAsArray = "awefawefwaefawefwaefawefwa" splitBy ""
var denominator = 10
---
(myStringAsArray divideBy denominator) map ($ joinBy "")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。