我将GREL表达式“value.split(/ a /)”应用于某些单元格:
abcdef -> [ "", "bcdef" ]
bcdefa -> [ "bcdef" ]
badef -> [ "b", "def" ]
我无法理解为什么第一个单元格在结果表中给了我一个“”元素。这是一个错误吗?
谢谢!
答案 0 :(得分:1)
我不知道Java足以评论这个函数的source code,但according to one of the developers of Open Refine这种行为是正常的(编辑:欧文评论中的更多细节,见下文)。这就是为什么还有其他功能来分割字符串。
例如,当value.smartSplit(/a/)
位于字符串的开头或结尾时, sep
会给出更一致的结果:
row value value.smartSplit(/a/)
1. abcdef [ "", "bcdef" ]
2. bcdefa [ "bcdef", "" ]
3. badef [ "b", "def" ]
这与使用启用了partition()
选项的omitfragment = true
的结果相同:
row value value.partition(/a/, true)
1. abcdef [ "", "bcdef" ]
2. bcdefa [ "bcdef", "" ]
3. badef [ "b", "def" ]