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

时间:2014-02-24 15:53:53

标签: regex r uppercase

是否有更简单的方法来完整匹配正则表达式模式?例如,要检查给定的字符串是否为大写以下两种方法,但看起来过于复杂。检查 stringr 我发现没有更简单解决方案的迹象。

方法1:

isUpperMethod1 <- function(s) {
  return (all(grepl("[[:upper:]]", strsplit(s, "")[[1]])))
}

方法2:

isUpperMethod2 <- function(s) {
  m = regexpr("[[:upper:]]+", s)
  return (regmatches(s, m) == s)
}

我故意省略处理空的NA,NULL字符串以避免膨胀的代码。

大写模式可以推广为任意正则表达式(或字符集)。

我发现上述两种解决方案都没有问题,只是它们对于解决的问题看起来过于复杂。

3 个答案:

答案 0 :(得分:24)

您可以使用^$模式匹配字符串的开头和结尾

grepl("^[[:upper:]]+$", s)

答案 1 :(得分:10)

为什么不通过&#34; toupper&#34;来测试单词是否与自身相同?功能

word1 <- "TEST"
word1 == toupper(word1) 

将是TRUE

答案 2 :(得分:2)

如果您希望生活在_base_manager的世界中,则此版本使用tidyr

stringr