我有一个带有字符串的向量,我想在R中操作 像这样:
c("sffssf/", "sfs/fs", "aaad")
我想确定我总是有一个" /"在每个字符串的末尾,但有时它们已经是" /"在某个字符串的末尾(或其他地方)。
我在str_sub
包中看到了stringr
,
我想也许我可以删除最后一个char条件,如果它是" /"。
并始终添加" /" afterworths。
我该怎么做,或者是他们更好的方法?
答案 0 :(得分:3)
你真的不需要stringr
(尽管它会起作用),因为基本的R正则表达式功能已经足够了。你真正需要的只是
sub('/?$', '/', c("sffssf/", "sfs/fs", "aaad"))
## [1] "sffssf/" "sfs/fs/" "aaad/"
sub
在第三个(向量)中查找第一个参数(模式),并将其替换为第二个(替换)。在此,'/?$'
告诉它查找/
,如果它在那里(即0或1次)?
,则后面是行$
的结尾。由于替换为/
,它会取出位于该行末尾的/
(如果有的话),并添加/
,为您提供你需要。
答案 1 :(得分:2)
我们可以使用str_replace
stringr
library(stringr)
str_replace(v1, "/*$", "/")
#[1] "sffssf/" "sfs/fs/" "aaad/"
v1 <- c("sffssf/", "sfs/fs", "aaad")