在特殊字符后大写第一个字母

11
我希望使用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)

它没有起作用。请帮忙。


你需要允许空格gsub("(^.|[,;]\\s*.)", "\\U\\1", string, perl=TRUE) - rawr
1个回答

8

您可以使用

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"

请看这个IDEONE演示 PCRE正则表达式匹配:
- `(^|\\p{P})` - (第一组)字符串开头或任何标点符号 - `\\s*` - 0个或多个空格符号 - `(.)` - (第二组)除换行符外的任何字符
替换为:
- `\\1` - 反向引用第一组 - ` ` - 在标点符号和下一个字符之间插入一个空格或在字符串开头插入一个空格 - `\\U\\2` - 将第二组字符转换为大写
使用 `trimws` 函数可删除我们用正则表达式添加的初始空格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接