我想删除多余的空格,如果需要的话添加空格,并使用R在特殊字符后的每个单词的首字母大写

string <- "apple,banana, cat, doll and donkey;     fish,goat"

我想输出为
Apple, Banana, Cat, Doll and donkey; Fish, Goat

我试过了
gsub("(^.|,.|;.)", "\\U\\1", string, perl=T, useBytes = F)

没用请帮忙

最佳答案

您可以使用

string <- "apple,banana, cat, doll and donkey;     fish,goat"
trimws(gsub("(^|\\p{P})\\s*(.)", "\\1 \\U\\2", string, perl=T))
## => [1] "Apple, Banana, Cat, Doll and donkey; Fish, Goat"

参见this IDEONE demo

PCRE正则表达式匹配:
  • (^|\\p{P})-(组1)字符串开头或任何标点符号
  • \\s*-0个或多个空格符号
  • (.)-(第2组)除换行符以外的任何字符

  • 更换:
  • \\1-后向引用组1
  • -在标点和下一个字符之间或在字符串
  • 的开头插入一个空格
  • \\U\\2-将第2组字符大写
  • trimws删除了我们用正则表达式添加的初始空间。

    关于regex - 特殊字符后的首字母大写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34135647/

    10-10 21:19
    查看更多