我试图通过字符串中第二次出现的字符进行拆分(在第二次出现字符x
之前返回字符串中的子字符串)
对于字符串:
s <-"a_b_c"
,如果分隔符是"_"
,我需要子字符串:"a_b"
我的函数在第一次出现时返回子字符串:
return_topic<-function(s)
{
if (length(grep("_",s))>0)
{ return (unlist(strsplit(s,"_"))[1])}
else return (" ")
}
> return_topic("a_b_c")
[1] "a"
答案 0 :(得分:5)
您可以使用sub
:
sub("(.*?_.*?)_.*", "\\1", s)
# [1] "a_b"
答案 1 :(得分:0)
使用strsplit
s <- c('a_b_c', '_b', '_bc_', 'abc__')
sapply(strsplit(s, '^[^_]*?[_][^_]*?(*SKIP)(*F)|_', perl=TRUE),`[`,1)
#[1] "a_b" "_b" "_bc" "abc_"