我想检查一个字符串是否只包含一种类型的字符
例如
INPUT:
str = "AAAAB"
char = "A"
OUTPUT:
str contains only char = FALSE
使用grepl(char,str)
,结果为TRUE,但我希望它为FALSE。
非常感谢
答案 0 :(得分: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
答案 1 :(得分:4)
您需要将not
运算符用于正则表达式,在您的情况下,这将是:
> !grepl("[^A]", "AAA")
[1] TRUE
> !grepl("[^A]", "AAAB")
[1] FALSE
使用变量:
grepl(paste0("[^", char, "]"), srt)
答案 2 :(得分:4)
另一种选择是使用charToRaw
并检查它是否是唯一的:
xx <- "AAAAB"
length(unique(charToRaw(xx))) ==1
[1] FALSE
答案 3 :(得分: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
答案 4 :(得分:3)
您可以使用&#34; stringi&#34;中的stri_count
。包,像这样:
library(stringi)
stri_count_fixed(str, char) == nchar(str)
# [1] FALSE