DataWeave字符串压缩转换求助:连续字符转字符+计数格式
DataWeave实现连续重复字符压缩转换
核心实现脚本
针对将连续重复字符转换为「字符+出现次数」格式的需求,直接用DataWeave正则替换即可完成:
%dw 2.0 output application/json --- { string: payload.string replace /(.)\1*/ with ($0[0] ++ sizeOf($0) as String) }
代码说明
- 正则匹配规则:
/(.)\1*/捕获任意单个字符,以及后续所有连续重复的该字符(\1引用第一个捕获组的字符,*表示零或多次重复)。 - 替换逻辑:
$0代表整个匹配到的连续字符片段(比如AAAAAA)$0[0]取片段的第一个字符(即A)sizeOf($0)获取片段长度(即6),转成字符串后和字符拼接得到A6
测试示例
输入:
{ "string":"AAAAAABBBBCCCDD" }
输出:
{ "string":"A6B4C3D2" }
扩展:单个字符不显示次数
如果需要单个字符仅保留本身(不追加1),可调整替换逻辑:
%dw 2.0 output application/json --- { string: payload.string replace /(.)\1*/ with ($0[0] ++ (if (sizeOf($0) > 1) sizeOf($0) as String else "")) }
输入{"string":"ABCD"}时,输出为{"string":"ABCD"}。
内容的提问来源于stack exchange,提问作者aaakheel6
相关产品推荐
相关产品推荐

