如何根据 OpenRefine 中的位置添加字符串字符?

How can I add a string character based on a position in OpenRefine?

我在 Openrefine 中有一列,我想根据字符串中的位置在其每一行中添加一个字符串。 例如: 我有一个第 8 个字符的数字字符串:85285296 并想在第四位添加“-”:“8528-5296”。 谁能帮我找到OpenRefine中的具体函数?

谢谢

Tzipy

可能的解决方案(不确定是否是最直接的):

value.replace(/(\d{4})(.+)/, "-")

意思是:如果$1表示前面正则表达式中第一个parenthesis/group的内容,$2表示第二个parenthesis/group的内容,则用$1-$2替换该列中的每个值。

其他一些选项:

value.splitByLengths(4,4).join("-")

value.match(/(\d{4})(\d{4})/).join("-")

value.substring(0,4)+"-"+value.substring(4,8)

我认为 'splitByLengths' 是最简洁的,但我可能会使用 'match' 代替,因为如果您的起始字符串不是 8 位数字,它会失败并出现错误 - 这意味着您不会意外处理不符合您对列中数据的假设的数据 - 但您可以使用 facet/filter 与其他任何数据进行检查

最简单的方法是只使用表达式语言的内置字符串索引和连接:

value[0,4]+'-'+value[4,8]

或者更一般地说,如果您不知道您的值恰好是 8 个字符长:

value[0,4]+'-'+value[4,999]