我有一个这样的字符串:
phrase <- "this_is.//the_first?the_second"
因此我想基于这个字符串减去?并将此作为结果
>phrase_new[1]
"this_is.//the_first?"
>phrase_new[2]
"the_second"
我试试这个但是没有用。请问有什么想法吗?
phrase_new <- sub("[:?:]", "", phrase)
答案 0 :(得分:3)
如果您想按字符拆分,请更好地使用docs:
> strsplit(phrase, "?", fixed = TRUE)
[[1]]
[1] "this_is.//the_first" "the_second"
答案 1 :(得分:2)
如果我们需要sub
,我们可以捕获字符,直到?
作为一个组((...)
),在替换中,我们提供反向引用(\\1
)对于那个小组。
sub("(.*\\?).*", "\\1", phrase)
#[1] "this_is.//the_first?"
对于第二个子字符串,我们将一个或多个字符(.*
)与?
匹配,并将其替换为""
。
sub(".*\\?", "", phrase)
#[1] "the_second"
答案 2 :(得分:1)
正如@ m0nhawk所建议的那样,strsplit非常适合打破字符串。但是,对于您要求提取元素,您必须使用双方括号
phrase <- "this_is.//the_first?the_second"
phrase_new <- strsplit(phrase,split = '?',fixed = T)[[1]]
phrase_new[1]
phrase_new[2]