首页 > 解决方案 > 在字符串中定位字符

问题描述

我正在尝试从字符的右侧动态提取子字符串。

字符串<- adcde?7890 所需的子字符串:7890

为了实现这一点,我希望能够确定“?”的位置 在每个字符串中,在本例中,“?” 将是第 6 个字符。

最后我的代码看起来像这样:

substr("'的位置?'"+1 , str_length(string))

我只需要一个显示“?”位置的函数。在我的字符串中。

标签: r

解决方案


我们可以用它str_locate来查找字符的位置?。它是一个正则表达式元字符,因此我们可以将它放在方括号(或转义)中以将其评估为文字字符

library(stringr)
substr(string, str_locate(string, "[?]")[1] + 1, str_length(string))
#[1] "7890"

或仅使用base R,我们可以找到匹配位置regexpr并将其用作起始位置substring

substring(string, regexpr("[?]", string)+1)
#[1] "7890"

或使用str_extract

str_extract(string, "(?<=[?])\\d+")
#[1] "7890"

数据

string <- 'adcde?7890'

推荐阅读