【问题标题】:Capitalize first letter after special characters特殊字符后的第一个字母大写
【发布时间】:2016-03-12 04:16:48
【问题描述】:

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

标签: regex r uppercase capitalization


【解决方案1】:

你可以使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2014-12-01
    • 2017-07-30
    相关资源
    最近更新 更多