6

私は、分音記号付きの Unicode 文字をプレーンな ASCII 文字に変換する Google スプレッドシートの数式を作成しようとしています。

Google が「REGEXREPLACE」関数でRE2 を使用していることがわかります。そして、RE2 が Unicode 文字クラスを提供していることがわかります。

私は式を書き込もうとしました(これに似ています):

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

ただし、スプレッドシートでは次のエラーが発生します。

関数 REGEXREPLACE パラメータ 2 の値 "\pL" は有効な正規表現ではありません。

入れ子になった SUBSTITUTE 関数 ( Like this one ) の長いセットで構成される数式を記述できると思いますが、それはかなりひどいようです。

Google スプレッドシートの数式でダイアクリティカル/アクセント記号を使用して Unicode 文字を正規化するためのより良い方法を提案できますか?

4

3 に答える 3

8

[[:^alpha:]](否定された ASCII 文字クラス) は、REGEXEXTRACT式に対して正常に機能します。

しかし=REGEXREPLACE("público","([[:alpha:]])[[:^alpha:]]","$1")、結果として「pblic」が得られます。したがって、数式は正確な ASCII 文字が "ú" を置き換える必要があることを認識していないと思います。


回避策

という言葉を取り上げましょうpúblicē。その中の 2 つのシンボルを置き換える必要があります。この単語をセル 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 スクリプトを使用する

Googleシートで機能する良い解決策も見つかりました。

于 2016-02-26T12:22:55.390 に答える