特殊字符后首字母大写

Capitalize first letter after special characters

我想删除多余的空格,如果需要添加空格并使用 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 个或更多白色space 符号
  • (.) -(第 2 组)除换行符外的任何字符

替换者:

  • \1 - 反向引用组 1
  • - 在标点符号和下一个字符之间或字符串
  • 的开头插入 space
  • \U\2 - 将第 2 组字符转为大写

并且 trimws 删除了我们用正则表达式添加的初始 space。