如何根据 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]
我在 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]