如何在 Openrefine 中获取数组中最长的字符串

how to get the longest string in an array in Openrefine

用 GREL 可以得到数组中最长的字符串吗? 例如,如果我有一个包含 3 个字符串的数组 ["a"、"aaa"、"aa"],我想获得 "aaa".

你或许可以用一个非常复杂的公式来做到这一点。 Open Refine 添加 Python(和 Clojure)作为脚本语言通常就是面对这种情况。即使您不知道 Python,您也可以在两分钟内找到问题 "how to choose the longest string in list?" 的答案并简单地复制并粘贴它(通过添加 "return" 而不是 "print")

在这种情况下:

return max(['a','aaa','aaaa','aa'], key=len)

编辑

为了挑战,这里有一个可能的 GREL 解决方案。

value = "a,aa,aaaa,aa"

forEach(value.split(','), e, if(length(e)==sort(forEach(value.split(','), e, e.length()))[-1], e, null)).join(',').split(',')