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

cigdeys3  于 2023-08-08  发布在  其他
关注(0)|答案(3)|浏览(78)

是否有更简单的方法来匹配正则表达式模式的整体?例如,要检查给定字符串是否大写,以下2种方法似乎太复杂。检查stringr我也没有发现更简单的解决方案。

方法一:

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

字符串

方法二:

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


我故意省略了对空、NA、NULL字符串的处理,以避免代码臃肿。

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

我看不出以上两种解决方案有什么问题,只是它们对于解决的问题来说似乎过于复杂。

k5ifujac

k5ifujac1#

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

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

字符串

8tntrjer

8tntrjer2#

为什么不使用“toupper”函数测试转换为大写字母时单词是否与其本身相同呢?

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

字符串
将为TRUE

c9x0cxw0

c9x0cxw03#

如果你更喜欢使用tidyverse,下面是使用stringr的版本:

library(stringr)
str_detect(s, "^[:upper:]+$")

字符串

相关问题