【发布时间】:2017-08-06 19:31:25
【问题描述】:
如何在发送到 hive 的 SELECT 请求中将非 ascii 字符替换为对应的 ascii 字符?即删除了重音符号(é、ê、è => e)并删除了其他非字母数字字符(``)。
我知道我可以使用regexp_replace(),但我必须处理所有重音/非重音对。当然,还有更实用的东西吗?
【问题讨论】:
如何在发送到 hive 的 SELECT 请求中将非 ascii 字符替换为对应的 ascii 字符?即删除了重音符号(é、ê、è => e)并删除了其他非字母数字字符(``)。
我知道我可以使用regexp_replace(),但我必须处理所有重音/非重音对。当然,还有更实用的东西吗?
【问题讨论】:
看来你想用
String subjectString = "öäü";
subjectString = Normalizer.normalize(subjectString, Normalizer.Form.NFD);
如中所述 Replace non ASCII character from string
我曾尝试使用reflect,但由于Normalizer.Form 枚举参数无法使其工作。
所以,看来你必须定义一个单行UDF:
public class NormalizerUDF extends UDF {
public String evaluate(String in) {
return Normalizer.normalize(in, Normalizer.Form.NFD);
}
}
【讨论】: