我有一个字符串
x <- "lowerUpper"
并且想要确定此字符串中的字符是否为大写字母。
我可以使用toupper(x) == x
,它告诉我所有字符是否都是大写的,但我如何检查是否只有一些(和哪些)?
答案 0 :(得分:4)
一个选项是gregexpr
来查找字符大写的位置
unlist(gregexpr("[A-Z]", x))
#[1] 6
答案 1 :(得分:2)
您还可以使用符号\U
来检查大写:
unlist(gregexpr("\\U", "lowerUpper"))
#[1] 6
答案 2 :(得分:1)
> x <- "lowerUpper"
> sapply(strsplit(x, ''), function(a) which(a %in% LETTERS)[1])
[1] 6
或
> library(stringi)
> stri_locate_first_regex(x, "[A-Z]")
答案 3 :(得分:1)
另一个选择是检查每个字母:
which(toupper(strsplit(x,split = "")[[1]])==strsplit(x,split = "")[[1]])
#[1] 6
答案 4 :(得分:1)
也许是使用%in%
的更干净的代码版本unlist(strsplit("lowerUpper",'')) %in% LETTERS
这里的一个优点是返回指示字符串中每个字母位置的逻辑向量。此解决方案也适用于多个大写字母,而grep选项仅返回第一个匹配。最后,使用LETTERS可以让我的代码更具可读性。