我正在使用apache nifi来转换一些数据。
我有一个字符串:他没有说,\“S \\\”top!\“, unescapeJson()给我这个结果:<他没有说,“S”顶!“
是吗?我的预期结果是他没有说,“S”顶部!“。
如果该功能是为此而设计的,那么我怎样才能得到预期的结果。
示例:
input and output of ReplaceText
GetFile处理器只读了一个包含内容的文件:他没说,“S \\\”top!\“
答案 0 :(得分:2)
通过将ReplaceText 替换值属性更改为${'$1'}
,似乎可以解决此问题。在我的示例中,这产生了所需的输出He didn't say, "S\"top!"
。
我还不完全理解为什么,但我认为它与将搜索的输出评估为替换的正则表达式相关,其中在应用unescapeJson()
之前评估反斜杠,因此它最终成为多余的。例如,如果将替换值设置为$1
,则不会发生这种情况。
<强>更新强>
我上面的订单错了,解决顺序如下:
He didn’t say, \"S\\\"top!\"
${'$1':unescapeJson()}
评估为:He didn’t say, "S\"top!"
He didn’t say, "S"top!"
所以unescapeJson()按预期工作,你不期望的行为是替换中剩余的反斜杠作为String::replaceAll()的工件丢失。