5

我想检查一个字符串是否只包含一种类型的字符

例如

INPUT: 

str = "AAAAB"
char = "A"

OUTPUT:

str contains only char = FALSE

结果是 TRUE ,grepl(char,str)但我希望它是 FALSE。

非常感谢

4

5 回答 5

5

如果要检查特定字符(在 中char):

str <- "AAAAB"
char = "A"
all(unlist(strsplit(str, "")) == char)
#[1] FALSE

str <- "AAAA"
char = "A"
all(unlist(strsplit(str, "")) == char)
#[1] TRUE

或者,如果您想检查字符串是否仅包含一个唯一字符(任何一个):

str <- "AAAAB"
length(unique(unlist(strsplit(str, "")))) == 1
#[1] FALSE

str = "AAAA"
length(unique(unlist(strsplit(str, "")))) == 1
#[1] TRUE
于 2014-08-06T11:39:00.943 回答
4

您需要not对正则表达式使用运算符,在您的情况下,这将是:

> !grepl("[^A]", "AAA")
[1] TRUE
> !grepl("[^A]", "AAAB")
[1] FALSE

带变量:

grepl(paste0("[^", char, "]"), srt)
于 2014-08-06T11:38:54.247 回答
4

另一种选择是使用charToRaw并检查它是否是唯一的:

xx <- "AAAAB"
length(unique(charToRaw(xx))) ==1
[1] FALSE
于 2014-08-06T11:50:54.110 回答
3

使用gregexpr

char = "A"

str = "AAAA"
length(unlist(gregexpr(char, str))) == nchar(str)
## [1] TRUE

str = "ABAAA"
length(unlist(gregexpr(char, str))) == nchar(str)
## [1] FALSE
于 2014-08-06T11:48:06.407 回答
3

您可以使用stri_count“stringi”包中的,如下所示:

library(stringi)
stri_count_fixed(str, char) == nchar(str)
# [1] FALSE
于 2014-08-06T11:50:19.280 回答