["a","b","c","d"] 我知道拆分方法: SELECT split("abcd",""); #["a","b","c","d",""]-6ren">
gpt4 book ai didi

Hive 将字符串转换为字符数组

转载 作者:行者123 更新时间:2023-12-05 00:42:25 34 4
gpt4 key购买 nike

例如,如何将字符串转换为字符数组

"abcd" -> ["a","b","c","d"]

我知道拆分方法:

SELECT split("abcd","");

#["a","b","c","d",""]

是最后一个空格的错误吗?或任何其他想法?

最佳答案

这实际上不是错误。 hive split function只需调用底层 Java String#split(String regexp, int limit) limit 参数设置为 -1 的方法,这会导致返回尾随空格。

我不打算深入研究它为什么会发生的实现细节,因为已经有一个 brilliant answer。描述了这个问题。请注意,str.split("", -1) 将根据您使用的 Java 版本返回不同的结果。

几个备选方案:

  1. 使用 "(?!\A|\z)" 作为分隔符正则表达式,例如拆分(“abcd”,“(?!\\A|\\z)”)。这将使正则表达式匹配器在字符串的开始和结束位置跳过零宽度匹配
  2. 创建自定义 UDF,使用 String#toCharArray(),或接受 limit 作为 UDF 的参数,以便您可以使用它是:SPLIT("", 0)

关于Hive 将字符串转换为字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49026905/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com