我在 Openrefine 中有一个列,我想根据字符串中的位置在其每一行中添加一个字符串。例如:我有一个第8个字符的数字串:85285296,想在第四位加“-”:“8528-5296”。任何人都可以帮我找到 OpenRefine 中的具体功能吗?
谢谢
齐皮
我在 Openrefine 中有一个列,我想根据字符串中的位置在其每一行中添加一个字符串。例如:我有一个第8个字符的数字串:85285296,想在第四位加“-”:“8528-5296”。任何人都可以帮我找到 OpenRefine 中的具体功能吗?
谢谢
齐皮
最简单的方法是只使用表达式语言的内置字符串索引和连接:
value[0,4]+'-'+value[4,8]
或更一般地说,如果您不知道您的值正好是 8 个字符长:
value[0,4]+'-'+value[4,999]
可能的解决方案(不确定它是否最直接):
value.replace(/(\d{4})(.+)/, "$1-$2")
这意味着:如果 $1 代表之前正则表达式中第一个括号/组的内容,而 $2 代表第二个括号/组的内容,则将列中的每个值替换为 $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 位数字,它会失败并出现错误 - 这意味着您不会意外处理不符合您的假设的数据列中有哪些数据-但您可以使用构面/过滤器与其他任何数据进行检查