我有大量的名字,大部分使用的是德语字符集,即ASCII+ä,ö,ü,?有些名字使用特殊字符(例如ğ),我想将其音译成德语版本.因此,"Özoğuz"应改为"Özoguz".
我试过了
stri_trans_general("Özoğuz", "de-ASCII")
但这将导致"Oezoguz"不是所需的"Özoguz".
我有大量的名字,大部分使用的是德语字符集,即ASCII+ä,ö,ü,?有些名字使用特殊字符(例如ğ),我想将其音译成德语版本.因此,"Özoğuz"应改为"Özoguz".
我试过了
stri_trans_general("Özoğuz", "de-ASCII")
但这将导致"Oezoguz"不是所需的"Özoguz".
de-ASCII
规则集将Ö
转换为Oe
.如果您想要偏离此规则,但仍保留德国的ASCII规则集,则stringi
docs规定为Custom rule-based transliteration is also supported.
我们可以定义将Ö
(大写和小写)转换为第三个字符的规则,将de-ASCII
规则应用于其他所有字符,然后将第三个字符转换回Ö
:
id <- "
Ö > \u2135;
ö > \u2136;
:: de-ASCII;
\u2135 > Ö;
\u2136 > ö
"
stringi::stri_trans_general("Özoğuz", id, rules = TRUE)
# [1] "Özoguz"
对于大写和小写的Ö
,我分别使用了"ℵ"
和"ℶ"
,但任何您确定不会出现在您的字符串中的utf-8字符都应该可以使用.