检查,如果在字符串中的字符是大写
问题描述:
我有一个字符串检查,如果在字符串中的字符是大写
x <- "lowerUpper"
,并希望做决定是否和这个字符串中的字符是一个大写字母。
我可以使用toupper(x) == x
,它告诉我,如果所有字符都是大写的,但是如何检查是否只有一些(和哪些)是?
答
一种选择是gregexpr
寻找到字符为大写
unlist(gregexpr("[A-Z]", x))
#[1] 6
答
> x <- "lowerUpper"
> sapply(strsplit(x, ''), function(a) which(a %in% LETTERS)[1])
[1] 6
或
> library(stringi)
> stri_locate_first_regex(x, "[A-Z]")
答
另一种方法是检查每个字母的位置:
which(toupper(strsplit(x,split = "")[[1]])==strsplit(x,split = "")[[1]])
#[1] 6
答
您也可以使用符号\U
检查大写:
unlist(gregexpr("\\U", "lowerUpper"))
#[1] 6
答
也许%使用%的清洁器代码版本
unlist(strsplit("lowerUpper",'')) %in% LETTERS
这里的优点是指示在每个字母位置的逻辑矢量的返回串。此解决方案也适用于多个大写字母,而grep选项仅返回第一个匹配项。最后,使用LETTERS可以让我记住更多可读代码。
完美!谢谢! – smoff