【问题标题】:append letter to a string in r将字母附加到r中的字符串
【发布时间】:2021-10-28 00:13:58
【问题描述】:

我有一个向量:

 c("BAAAVAST", "BAACEZ", "BAAGECBA", "LOL")

我想从包含它的单词中删除“BAA”。我想在这些词后面加上“.PR”。

期望的结果:

 c("AVAST.PR", "CEZ.PR", "GECBA.PR", "LOL")

有什么想法吗?理想情况下使用stringr。非常感谢。

【问题讨论】:

  • 您的字符串是否总是以“BAA”开始,还是要删除字符串中的“BAA”? “CEZBAAAAVAST”应该怎么办?

标签: r regex stringr


【解决方案1】:

您可以使用以下解决方案:

gsub("BAA(.*)", "\\1\\.PR", vec)

[1] "AVAST.PR" "CEZ.PR"   "GECBA.PR" "LOL" 

【讨论】:

  • 完全正确,我的第一个捕获组没有任何意义。 :D
  • 你是这里的大师马丁,我正在向你和其他人学习 :) 你有没有注意到 regex 备忘单很有帮助:)
【解决方案2】:

你可以使用

library(stringr)

# optimized thanks to Anoushiravan
str_replace(c("BAAAVAST", "BAACEZ", "BAAGECBA", "LOL"), "BAA(\\w*)", "\\1.PR")
#> [1] "AVAST.PR" "CEZ.PR"   "GECBA.PR" "LOL" 
  • 如果您只想匹配单词字符,请使用\\w*,如果对字符没有限制,请使用.*

【讨论】:

    【解决方案3】:

    这比其他答案详细。它找到带有'BAA' 的字符串并将'PR.' 附加到它。

    inds <- grepl('BAA', vec, fixed = TRUE)
    vec[inds] <- paste(sub('BAA', '', vec[inds]), 'PR', sep = '.')
    vec
    #[1] "AVAST.PR" "CEZ.PR"   "GECBA.PR" "LOL" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 2012-05-28
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多