的最后一个字符考虑这样的数据:提取直到字符串
str <- c("OTB_MCD_100-119_0_0", "PS_SPF_16-31_0_0", "PP_DR/>16-77")
如何将它做成一个像这样的字符串?
str
[1] "OTB_MCD" "PS_SPF" "PP_DR"
我试过substr,但是它在字符长度不同时不起作用。
的最后一个字符考虑这样的数据:提取直到字符串
str <- c("OTB_MCD_100-119_0_0", "PS_SPF_16-31_0_0", "PP_DR/>16-77")
如何将它做成一个像这样的字符串?
str
[1] "OTB_MCD" "PS_SPF" "PP_DR"
我试过substr,但是它在字符长度不同时不起作用。
我们可以使用sub
匹配后跟0个或多个字符不属于字母([^A-Za-z]*
),直到字符串的结尾($
)零个或多个_
,与空白(""
)
sub("_*[^A-Za-z]*$", "", str)
#[1] "OTB_MCD" "PS_SPF" "PP_DR"
对不起,但它不工作:[1]“OTB_MCD”“PS_SPF”“PP_DR /> 16-77” –
@JeppeOlsen更新了帖子 – akrun
更换目前还不清楚你想要做什么,是你想要删除的位*总是*连字符后面的位? – anotherfred
你想停在第一个数字(减去最后一个连字符?) – Arault