如何在Google表格中规范化/归化Unicode字符?

Kir*_*n14 6 regex unicode formulas google-sheets re2

我正在尝试为Google表格编写一个公式,它会将带有变音符号的Unicode字符转换为纯ASCII等效字符.

我看到Google在其"REGEXREPLACE"功能中使用了RE2.我发现RE2提供了Unicode字符类.

我试着写一个公式(类似于这个):

REGEXREPLACE("público","(\pL)\pM*","$1")
Run Code Online (Sandbox Code Playgroud)

但是Sheets会产生以下错误:

函数REGEXREPLACE参数2值"\ pL"不是有效的正则表达式.

我想我可以写一个由一组很长的嵌套SUBSTITUTE函数组成的公式(就像这个一样),但这看起来非常糟糕.

是否可以提供更好的方法来建议使用Google表格公式中的带有变音/重音标记的Unicode字母标准化?

Max*_*rov 6

[[:^alpha:]](否定的ASCII字符类)适用于REGEXEXTRACT公式。

但是=REGEXREPLACE("público","([[:alpha:]])[[:^alpha:]]","$1")结果是“ pblic”。因此,我想公式不知道确切的ASCII字符必须替换“ú”。


解决方法

让我们用这个词吧públic?;我们需要替换其中的两个符号。将此单词放在单元格A1中,并将此公式放在单元格B1中:

=JOIN("",ArrayFormula(IFERROR(VLOOKUP(SPLIT(REGEXREPLACE(A1,"(.)","$1-"),"-"),D:E,2,0),SPLIT(REGEXREPLACE(A1,"(.)","$1-"),"-"))))
Run Code Online (Sandbox Code Playgroud)

然后在D:E范围内创建替换目录:

    D    E  
1   ú   u
2   ?   e
3  ...  ...
Run Code Online (Sandbox Code Playgroud)

这个公式仍然很丑陋,但是更有用,因为您可以通过向表中添加更多字符来控制目录。


或使用Java脚本

找到了一个很好的解决方案,该方法适用于Google表格。