[英]Substitute captured non-ascii letter with upper case
是否可以仅使用正则表达式和仅基本 R(仅使用 g*sub() 函数)进行复制,以下...
sub("(i)", "\\U\\1", "string", perl = TRUE)
# [1] "strIng"
对于非ASCII字母?
# Hoped for output
sub("(í)", "?", "stríng", perl = TRUE)
# [1] "strÍng"
PS。 R 正则表达式风格是 TRE 和 PCRE。
PS2。 我正在使用 R 4.2.1 和Sys.getlocale()
给出:
[1] "LC_COLLATE=Icelandic_Iceland.utf8;LC_CTYPE=Icelandic_Iceland.utf8;LC_MONETARY=Icelandic_Iceland.utf8;LC_NUMERIC=C;LC_TIME=Icelandic_Iceland.utf8"
对于仅使用基本 R 的稍微复杂/明确的解决方案:
sub_nascii <- function(pattern, string) {
matches <- gregexpr(pattern, string)[[1]]
for (i in matches) {
substr(string, i, i) <- toupper(substr(string, i, i))
}
string
}
sub_nascii(pattern = "í", "stríng")
这适用于我的语言环境,而sub
本身不起作用。
您可以使用
x="stríng"
gr <- gregexpr("í", x)
mat <- regmatches(x, gr)
regmatches(x, gr) <- lapply(mat, toupper)
# > x
# > [1] "strÍng"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.