我有一个字符串
text <- "This String IS a tESt. TRYING TO fINd a waY to do ThiS."
我想在R中使用gsub来替换每个不是第一个小写字母的单词中的所有字符。这可能吗?
desired_output <- "This String Is a test. Trying To find a way to do This."
答案 0 :(得分:2)
有一种很好的方法可以做到这一点。我们可以在Perl模式下调用gsub
,利用小写捕获组的能力。
text <- "This String IS a tESt. TRYING TO fINd a waY to do ThiS."
gsub("(?<=\\b.)(.*?)\\b", "\\L\\1", text, perl=TRUE)
[1] "This String Is a test. Trying To find a way to do This."
答案 1 :(得分:0)
应该有一些很好的方法可以做到这一点,但是,一种方法是分割每个单词并降低除第一个单词之外的单词的所有字符,然后再将paste
字符串返回。
paste0(sapply(strsplit(text, " ")[[1]], function(x)
paste0(substr(x, 1, 1),tolower(substr(x, 2, nchar(x))))), collapse = " ")
#[1] "This String Is a test. Trying To find a way to do This."
详细的逐步说明:
strsplit(text, " ")[[1]]
#[1] "This" "String" "IS" "a" "tESt." "TRYING" "TO" "fINd"
# [9] "a" "waY" "to" "do" "ThiS."
sapply(strsplit(text, " ")[[1]], function(x)
paste0(substr(x, 1, 1),tolower(substr(x, 2, nchar(x)))))
# This String IS a tESt. TRYING TO fINd
# "This" "String" "Is" "a" "test." "Trying" "To" "find"
# a waY to do ThiS.
# "a" "way" "to" "do" "This."
paste0(sapply(strsplit(text, " ")[[1]], function(x)
paste0(substr(x, 1, 1),tolower(substr(x, 2, nchar(x))))), collapse = " ")
#[1] "This String Is a test. Trying To find a way to do This."