同时替换R中的所有变音符(使用正则表达式)

Dan*_*mov 6 regex r

我有德语文字,我想将所有变音符号(ä,Ä,ü,Ü,ö,Ö)替换为ae,oe,ue等。

我可以单独进行操作(通过将每个替换保存到一个新文件中):

gsub(pattern = '[ä]', replacement = "ae",text)
gsub(pattern = '[ü]', replacement = "ue",text)
gsub(pattern = '[ö]', replacement = "oe",text)
Run Code Online (Sandbox Code Playgroud)

但是我可以在一个命令中做到这一点吗(包括用Ae,Oe和Ue等替换大写字母)?

我可以用正则表达式来做吗?

zer*_*eck 9

这里的一些解决方案可能会也可能不会起作用,具体取决于运行 R 的操作系统的区域设置和输入字符串的编码。我在不同的操作系统和不同的语言设置上多次遇到这个问题。目前我正在使用德语 Windows 10 开发 R,但有时在英语 Ubuntu VM 上运行代码。

\n

在 Windows 和 Ubuntu(de_DE 和 en_US)下,这是一个非常快速且可靠的解决方案:\n https://github.com/gagolews/stringi/issues/269#issuecomment-488623874

\n
> stringi::stri_trans_general("\xc3\xa4 \xc3\xb6 \xc3\xbc \xc3\x9f", "de-ASCII; Latin-ASCII")\n[1] "ae oe ue ss"\n
Run Code Online (Sandbox Code Playgroud)\n

ICU 转换 id 的内部;使其成为“复合 id”。请参阅?stri_trans_general获取更多信息。

\n


luk*_*keA 5

你可以试试

# install.packages("stringi) # uncomment & run if needed
str <- c("äöü", "ÄÖÜ")
stringi::stri_replace_all_fixed(
  str, 
  c("ä", "ö", "ü", "Ä", "Ö", "Ü"), 
  c("ae", "oe", "ue", "Ae", "Oe", "Ue"), 
  vectorize_all = FALSE
)
# [1] "aeoeue" "AeOeUe"
Run Code Online (Sandbox Code Playgroud)