2

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

谢谢

齐皮

4

3 回答 3

3

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

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

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

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

于 2019-08-13T15:28:35.097 回答
2

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

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

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

于 2019-08-13T13:13:46.073 回答
1

其他一些选项:

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

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

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

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

于 2019-08-13T15:11:20.207 回答