在字符串中找到字符

时间:2018-06-05 05:58:20

标签: r

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

string< - adcde?7890 期望的子串:7890

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

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

substr(“'''的位置+ 1,str_length(字符串))

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

2 个答案:

答案 0 :(得分:1)

我们可以使用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'

答案 1 :(得分:0)

在基础R中执行此操作:

substr(string,regexpr("\\?",string)+1,nchar(string)) # You use \\ since ? is a special character  
[1] "7890"

但是你可以避免这一切,只需使用sub

  sub(".*\\?","",string)
 [1] "7890"