以Presto区分字符串的宽度(零宽度字符)

时间:2019-07-08 08:23:50

标签: presto

我想比较字段的字节长度,因为该字段中可能包含一些零宽度字符。

Binary函数似乎最相关,但是似乎它们都期望长度为一的输入,而且我找不到用任何方法将字符串分割成单独的行。

例如

select from_hex('abc')

给出错误

  

无效的输入长度3

我无法“一无所获”将其转换为3行(分别为abc):

select split('abc', '')
  

分隔符不能为空字符串

在R中,我习惯了nchar函数,可以在其中指定type = 'bytes'(按字节数),'chars'(与Presto的length匹配)见过)或'width'(零宽度字符不计算在内-字符串的可见宽度),其中strsplit('abc', NULL)strsplit('abc', '')给出list(c('a', 'b', 'c'))。 / p>

我不确定是否可以在此处复制粘贴具有零宽度字符的字符串,因此这里是创建一个的R代码:

rawToChar(as.raw(c(0x68, 0x65, 0x6c, 0x6c, 0x6F, 0xe2, 0x80, 0x8d)))

具有Presto length的输出:

select length('hello‍')

在R中,我可以得到此字符串的三种不同宽度:

sapply(c('width', 'chars', 'bytes'), x = 'hello‍')
# width chars bytes 
#     5     6     8 

有什么方法可以在Presto中复制它吗?

0 个答案:

没有答案