如何检测所有大写字母中的字符串并将其转换为start case

 汉臣Y 发布于 2023-02-03 10:38

说我有以下矢量

x <- c('One', 'TWO', 'THREE / FOUR')

我想转换TWOTHREE / FOURTwoThree / Four分别.我已经看了一下casefold()整个chartr()帮助页面,但无法弄清楚这一点.

在我真正的问题中,我有一个1500字符串的向量,我打算在其中检测以全部大写字母写的条目(我知道它们中的许多都包含斜线,就像上面示例中的斜杠一样)并将它们转换为start case.

我可以做的一件事是运行grepl('^[A-Z]+$', x)(由tenub建议),但它没有检测到THREE / FOUR全部大写(它产生[1] FALSE TRUE FALSE).从我所看到的,只有空间的存在足以让这种回归FALSE.

删除锚点grepl('[A-Z]+$', x)(由TheGreatCO建议)适用于上面的示例,但在下一个示例中失败:

y <- "Imposto Territorial Rural - ITR"
grepl('[A-Z]+', y)
[1] TRUE

此外,无论我尝试什么,包含重音符号的元素总是被遗漏:

z <- c('Á')
grepl('[A-Z]+', z)
[1] FALSE

Blue Magiste.. 5

部分内容是包中的演示示例gsubfn.您可以在安装包后运行它demo(gsubfn::gsubfn-lower).

x <- c('One', 'TWO', 'THREE / FOUR', 'ÁÁÁ')
library(gsubfn)
## find indices of vector where there are no lowercase letters 
## (therefore all letters must be uppercase)
idx <- grep("[[:lower:]]", x, invert = TRUE)
## in these indices, run tolower on characters 
## that do not follow a word boundary \\B
x[idx] <- gsubfn("\\B.", tolower, x[idx], perl = TRUE)
# [1] "One"          "Two"          "Three / Four" "Ááá"

这两个\B[:lower:]的区域设置相关的Sys.getlocale("LC_CTYPE").我的是"English_United States.1252".你的旅费可能会改变.

1 个回答
  • 部分内容是包中的演示示例gsubfn.您可以在安装包后运行它demo(gsubfn::gsubfn-lower).

    x <- c('One', 'TWO', 'THREE / FOUR', 'ÁÁÁ')
    library(gsubfn)
    ## find indices of vector where there are no lowercase letters 
    ## (therefore all letters must be uppercase)
    idx <- grep("[[:lower:]]", x, invert = TRUE)
    ## in these indices, run tolower on characters 
    ## that do not follow a word boundary \\B
    x[idx] <- gsubfn("\\B.", tolower, x[idx], perl = TRUE)
    # [1] "One"          "Two"          "Three / Four" "Ááá"
    

    这两个\B[:lower:]的区域设置相关的Sys.getlocale("LC_CTYPE").我的是"English_United States.1252".你的旅费可能会改变.

    2023-02-03 10:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有