【问题标题】:Locate character within string [duplicate]在字符串中定位字符[重复]
【发布时间】:2018-11-14 12:30:21
【问题描述】:

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

字符串

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

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

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

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

【问题讨论】:

  • 只做sub(".*\\?","",string)

标签: r


【解决方案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'

【讨论】:

    【解决方案2】:

    要在基础 R 中执行此操作:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2015-01-22
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      相关资源
      最近更新 更多