将字符串中所有单词的首字母写入新字母

时间:2017-05-18 09:23:56

标签: r

我必须在一个新字符串中写下包含9个单词的字符串的所有首字母。 有没有比这更好的方法:

    eg <- "This is a test I developed"
    temp.eg <- strsplit(eg,' ')[[1]]
    temp.eg <- substr(temp.eg, 0, 1)
    new.eg <- paste(temp.eg, collapse = "")

另外,是否有另一种分割字符串的方法,所以我不必使用:

strsplit() [[1]]

2 个答案:

答案 0 :(得分:3)

您可以使用gsub提取第一个字母和单词边界(\\b):

gsub("\\b(\\w)(\\b|(\\w+))( |$)", "\\1", eg)
[1] "TiatId"

说明:您要求提供&#34;字&#34;字符边界之后的字符(\\w),后跟字边界或更多单词字符,然后是空格或字符串的结尾($)。

@lukeA提供的另一个选项:

gsub("(?<!\\b).|\\s", "", eg, perl=TRUE)
[1] "TiatId"

它使用look-behind(?<!之前不得...... )来&#34;抑制&#34; (用空字符串替换)任何不是字边界的任何东西或空格。

答案 1 :(得分:3)

要避免[[子集,我们可以使用unlist,其余代码看起来很好:

paste(substr(unlist(strsplit(eg, " ")), 1, 1), collapse = "")
# [1] "TiatId"

如果我们有多个字符串:

egLong <- c("This is a test I developed", "another test me")

sapply(strsplit(egLong, " "), function(i){
  paste(substr(i, 1, 1), collapse = "")
  })
# [1] "TiatId" "atm" 
相关问题