假设我有一个字符串1:132464_A/T
,在R中,如何在下划线_
之后的部分字符串替换为另一个字符串?在这种情况下,将A/T
替换为ABC
。输出为1:132464_ABC
。
答案 0 :(得分:2)
使用sub
,匹配_
,后跟字符(.*
),将其替换为_
,并使用字符串替换'BC'
sub("_A.*", "_ABC", str1)
#[1] "1:132464_ABC"
或者如果我们的'A'也发生变化,则捕获为一个组((_.)
-下划线,后跟任意字符.
),再捕获其他字符(.*
),然后替换捕获组的后向引用(\\1
)以及替换字符串
sub("(_.).*", "\\1BC", str1)
#[1] "1:132464_ABC"
或者使用正则表达式环顾四周来捕获_
之后的字符并替换为捕获组的反向引用
sub("(?<=_)(.).*", "\\1BC", str1, perl = TRUE)
#[1] "1:132464_ABC"
或使用str_replace
library(stringr)
str_replace(str1, "_A.*", "_ABC")
#[1] "1:132464_ABC"
或使用stri_replace
中的stringi
library(stringi)
stri_replace(str1, regex = "_A.*", "_ABC")
#[1] "1:132464_ABC"
或在提取第一个元素之后先在_
处拆分字符串,然后在paste
处拆分
paste0(strsplit(str1, "_")[[1]][1], "_ABC")
#[1] "1:132464_ABC"
str1 <- "1:132464_A/T"
答案 1 :(得分:2)
用sub
和gsub
替代:(将XXXX_A / T中的所有内容替换为XXXX_ABC)
str <- "1:132464_A/T"
sub('\\_.*', '_ABC', str)
OR
gsub("\\_.*","_ABC",str)
输出:
[1] "1:132464_ABC"