【发布时间】:2017-10-05 21:57:42
【问题描述】:
String header = "EXL=TST+[Placeholder1]+[Placeholder2]+[Placeholder3]:[Placeholder2]"
header = header.replaceAll("\\[Placeholder1\\]", escapeEdi((String)${propertyVal1}))
header = header.replaceAll("\\[Placeholder2\\]", escapeEdi((String)${propertyVal2}))
header = header.replaceAll("\\[Placeholder3\\]", escapeEdi((String)${propertyVal3}))
println(header)
String escapeEdi(String target){
StringBuilder result = new StringBuilder();
for(char c : target.toCharArray()){
switch(c){
case '+':
case ':':
case '\'':
case '?':
result.append("?");
default:
result.append(c);
}
}
return result.toString();
}
通过上面的示例代码,我得到了带有很多问号的有效载荷结果:
示例负载:
EXL=TST+1+?1234?+1234+123?:123?+?1-1-170101?++?TEST?'
即使删除 escapeEdi 函数也会得到完全相同的结果。我什至不确定是否需要转义 edi,坦率地说,传递的值都没有任何此类字符,纯粹是字母数字。
因为 ?,它导致消息以 UTF-8-BOM 发送,而它们的末端并非旨在处理它,这意味着它必须在我的末端清除和删除。我怎样才能摆脱所有这些?
带有空字符串的简单 replaceAll 不起作用。 尝试在结果末尾进行 escapeEdi() 也没有做任何事情,而且我有一个与此非常相似的脚本,它工作得很好,不包括愚蠢的角色。什么可能导致此问题?
【问题讨论】:
-
即使只是尝试自己打印带有占位符的字符串似乎也让我得到了这些“?”是否存在可能导致此问题的特定字符?
-
期望的输出是什么?
标签: groovy utf-8 mule anypoint-studio