【发布时间】:2017-06-17 01:40:29
【问题描述】:
我正在使用 grepl 来检测字符串是否包含子字符串。例如:
grepl("-B4","P6-B4")
显然返回 True。现在我想避免在“-B4”子字符串之后有字符的情况。例如我想从下面看到 False:
grepl("-B4","P6-B41A")
如您所见,我想避免它的原因是因为 4 与 41 不同,我不想检测 41。 谢谢
【问题讨论】:
标签: r
我正在使用 grepl 来检测字符串是否包含子字符串。例如:
grepl("-B4","P6-B4")
显然返回 True。现在我想避免在“-B4”子字符串之后有字符的情况。例如我想从下面看到 False:
grepl("-B4","P6-B41A")
如您所见,我想避免它的原因是因为 4 与 41 不同,我不想检测 41。 谢谢
【问题讨论】:
标签: r
这似乎是使用endsWith() 的最佳时机。它确定字符串是否以特定字符或一系列字符结尾。
endsWith(c("P6-B41A", "P6-B4"), "-B4")
# [1] FALSE TRUE
根据help(endsWith),它也比grepl()效率更高。
【讨论】:
grepl("-B4$",c("P6-B41A", "P6-B4"))
#[1] FALSE TRUE
【讨论】:
另一种选择是提取最后 3 个字符并执行 ==
substr(v1, nchar(v1)-2, nchar(v1)) == "-B4"
#[1] FALSE TRUE
v1 <- c("P6-B41A", "P6-B4")
【讨论】: