如何用stri_trans_general()保留德语特殊字符并转写其他字符?
解决德语姓名转写时保留变音符号的问题
你遇到的问题是stri_trans_general的de-ASCII规则会将所有德语变音符号(如Ö、ä、ü)转成ASCII拼写形式(Ö→Oe),但你需要保留这些德语原生字符,仅转写其他特殊字符(如ğ→g)。
解决方案:自定义字符映射
直接针对需要转写的非德语特殊字符做精准替换,保留德语原有的变音符号:
library(stringi) # 定义需要转写的字符映射(可根据实际需求扩展) special_chars_map <- c( "ğ" = "g", "ş" = "s", "ı" = "i", "ç" = "c" ) # 处理目标姓名 original_name <- "Özoğuz" processed_name <- stri_replace_all_fixed( str = original_name, pattern = names(special_chars_map), replacement = special_chars_map, vectorize_all = FALSE ) print(processed_name) # 输出:Özoguz
为什么原代码不符合预期
de-ASCII是专门用于将德语特殊字符转换为纯ASCII兼容形式的规则,它的设计逻辑就是把Ö替换成Oe、ä替换成ae等,所以会同时处理你想保留的德语变音符号,导致结果不符合需求。
内容的提问来源于stack exchange,提问作者broti
相关产品推荐
相关产品推荐

