如何基于OpenRefine中的位置添加字符串字符?

时间:2019-08-13 11:58:21

标签: openrefine grel

我在Openrefine中有一列,我想根据字符串中的位置在其每一行中添加一个字符串。 例如: 我有第8个字符串:85285296,并想在第四位添加“-”:“ 8528-5296”。 有人可以帮助我在OpenRefine中找到特定功能吗?

谢谢

Tzipy

3 个答案:

答案 0 :(得分:2)

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

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

这意味着:如果$ 1代表正则表达式之前的第一个括号/组的内容,而$ 2代表第二个括号/组的内容,则用$ 1- $ 2替换列中的每个值。

答案 1 :(得分:2)

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

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

或更笼统地说,如果您不知道自己的值正好是8个字符:

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

答案 2 :(得分:1)

其他一些选择:

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

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

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

我认为'splitByLengths'是最干净的,但是我可能会使用'match',因为如果您的起始字符串不是8位数字,它将失败并显示错误-这意味着您不会意外处理不符合要求的数据您假设该列中包含什么数据-但您可以使用构面/过滤器与其他任何一个进行检查