单个字符总是在R中的向量字符串的末尾

时间:2016-07-04 19:31:55

标签: regex r string

我有一个带有字符串的向量,我想在R中操作 像这样:

c("sffssf/", "sfs/fs", "aaad")

我想确定我总是有一个" /"在每个字符串的末尾,但有时它们已经是" /"在某个字符串的末尾(或其他地方)。

我在str_sub包中看到了stringr, 我想也许我可以删除最后一个char条件,如果它是" /"。 并始终添加" /" afterworths。

我该怎么做,或者是他们更好的方法?

2 个答案:

答案 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")