【发布时间】:2021-06-12 16:34:59
【问题描述】:
我有 Sacher, Franz Xaver 或 Nishikawa, Kiyoko 这样的字符串。
使用 R,我想将它们更改为 Sacher, F. X. 或 Nishikawa, K.。
换句话说,逗号后面的每个单词的第一个字母都应该保留一个点(如果后面有另一个单词,则保留一个空格)。
Here is a related response,但它不能应用于我的案例 1:1,因为它的字符串中没有逗号; (<?=, ) 的简单添加似乎不起作用。
例如在以下尝试中,gsub() 替换了所有内容,而我的 str_replace_all()-attempt 导致错误:
TEST <- c("Sacher, Franz Xaver", "Nishikawa, Kiyoko", "Al-Assam, Muhammad")
# first attempt
# (resembles the response from the other thread)
gsub('\\b(\\pL)\\pL{2,}|.','\\U\\1', TEST, perl = TRUE)
# second attempt
# error: "Incorrect unicode property"
stringr::str_replace_all(TEST, '(?<=, )\\b(\\pL)\\pL{2,}|.','\\U\\1')
感谢您的帮助!
【问题讨论】: