在特殊字符后首字母大写

时间:2015-12-07 14:13:41

标签: regex r uppercase capitalization

我想删除多余的空格,如果需要可以添加空格,并使用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)

它没有用。请帮忙

1 个答案:

答案 0 :(得分:6)

您可以使用

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删除了我们使用正则表达式添加的初始空间。