首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >测试字符是否在字符串中

测试字符是否在字符串中
EN

Stack Overflow用户
提问于 2012-04-13 01:24:08
回答 5查看 611.3K关注 0票数 329

我正在尝试确定一个字符串是否是另一个字符串的子集。例如:

代码语言:javascript
复制
chars <- "test"
value <- "es"

如果"value“作为字符串"chars”的一部分出现,我想返回TRUE。在下面的场景中,我想返回false:

代码语言:javascript
复制
chars <- "test"
value <- "et"
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-13 01:28:43

使用grepl函数

代码语言:javascript
复制
grepl( needle, haystack, fixed = TRUE)

如下所示:

代码语言:javascript
复制
grepl(value, chars, fixed = TRUE)
# TRUE

使用?grepl了解更多信息。

票数 466
EN

Stack Overflow用户

发布于 2012-04-13 01:28:40

你想要grepl

代码语言:javascript
复制
> chars <- "test"
> value <- "es"
> grepl(value, chars)
[1] TRUE
> chars <- "test"
> value <- "et"
> grepl(value, chars)
[1] FALSE
票数 38
EN

Stack Overflow用户

发布于 2014-03-14 17:46:12

使用stringi包中的函数:

代码语言:javascript
复制
> stri_detect_fixed("test",c("et","es"))
[1] FALSE  TRUE

一些基准测试:

代码语言:javascript
复制
library(stringi)
set.seed(123L)
value <- stri_rand_strings(10000, ceiling(runif(10000, 1, 100))) # 10000 random ASCII strings
head(value)

chars <- "es"
library(microbenchmark)
microbenchmark(
   grepl(chars, value),
   grepl(chars, value, fixed=TRUE),
   grepl(chars, value, perl=TRUE),
   stri_detect_fixed(value, chars),
   stri_detect_regex(value, chars)
)
## Unit: milliseconds
##                               expr       min        lq    median        uq       max neval
##                grepl(chars, value) 13.682876 13.943184 14.057991 14.295423 15.443530   100
##  grepl(chars, value, fixed = TRUE)  5.071617  5.110779  5.281498  5.523421 45.243791   100
##   grepl(chars, value, perl = TRUE)  1.835558  1.873280  1.956974  2.259203  3.506741   100
##    stri_detect_fixed(value, chars)  1.191403  1.233287  1.309720  1.510677  2.821284   100
##    stri_detect_regex(value, chars)  6.043537  6.154198  6.273506  6.447714  7.884380   100
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10128617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档