1
Str <- "I love chocolate pudding"
pos <- 8

我需要在 pos 8 返回以字母 c 开头的单词,即巧克力。我怎样才能做到这一点?

4

3 回答 3

1

使用stringr和忽略 'starting with 'c' 条件:

Str %>%
  str_sub(pos) %>%
  word(1)
于 2020-06-03T07:45:29.553 回答
1
library(stringr)
str_extract(Str, "(?<=[\\w\\s]{7})\\bc\\w+\\b")
[1] "chocolate"

该解决方案使用str_extract了正向lookbehind ,(?<=[\\w\\s]{7})可以沿着这些线进行修饰:“如果您在左侧看到由字母数字字符( ( ) 以及作为单词首字母出现的字母。\\w\\s\\bc

或者,使用sub和反向引用:

sub(".{7}(\\bc\\w+\\b).*", "\\1", Str)
[1] "chocolate"
于 2020-06-03T07:35:54.633 回答
1

您可以使用substring获得第 8 个字符之后的所有内容。然后使用删除空间后的所有内容gsub

gsub(" .*", "", substring(Str, pos))

如果您需要检查“c”:

Str <- "I love dogs"

ifelse(
  substr(Str, pos, pos) == "c",
  gsub(" .*", "", substring(Str, pos)),
  ""
)
于 2020-06-03T07:32:23.387 回答