检查字符串中的字符是否为大写

时间:2017-07-19 08:50:21

标签: r uppercase

我有一个字符串

x <- "lowerUpper"

并且想要确定此字符串中的字符是否为大写字母。

我可以使用toupper(x) == x,它告诉我所有字符是否都是大写的,但我如何检查是否只有一些(和哪些)?

5 个答案:

答案 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可以让我的代码更具可读性。