2016-02-25 1 views
4

Я пытаюсь написать формулу для Google Таблиц, которая преобразует символы Unicode с диакритикой в ​​их простые эквиваленты ASCII.Как я могу нормализовать/перенести символы Юникода в Google Таблицы?

Я вижу, что Google uses RE2 в его функции REGEXREPLACE. И я вижу это RE2 offers Unicode character classes.

Я пытался написать формулу (аналог this one):

REGEXREPLACE("público","(\pL)\pM*","$1") 

Но Sheets производит следующее сообщение об ошибке:

Function REGEXREPLACE parameter 2 value "\pL" is not a valid regular expression.

Я предполагаю, что я мог бы написать формулу, состоящую из длинного набора вложенные функции SUBSTITUTE (Like this one), но это кажется довольно ужасным.

Можно ли предложить предложение о том, как лучше нормализовать буквы Unicode с диакритическими/акцентными знаками в формуле Google Таблиц?

ответ

2

[[:^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-"),"-")))) 

А затем создать каталог замен в диапазоне D: E:

D E 
1 ú u 
2 ē e 
3 ... ... 

Эта формула еще некрасиво, но более полезно, потому что вы можете управлять своим каталогом, добавив в таблицу больше символов.


Или использовать Java Script

Также found a good solution, который работает в Google листов.

+0

После двух лет, я полагаю, мне нужно принять это решение, но, честно говоря, эти обходные пути все еще довольно уродливые. Давай, Google, исправьте это! – Kirkman14

+0

Привет, @ Kirkman14. [Этот текст функционирует] (https://support.google.com/docs/table/25273?visit_id=1-636546276795993789-3021020026&hl=ru&rd=2) - это все, что у нас есть. Лучшим решением было бы написать пользовательскую функцию или [сообщить о проблеме] (https://stackoverflow.com/a/12106694/5372400) на форуме google. –

Смежные вопросы