두 단어 문자열에서 두 단어의 첫 번째 문자 대문자화
제가 두 단어 문자열을 가지고 있고 두 단어 모두를 대문자로 사용하고 싶다고 가정해 보겠습니다.
name <- c("zip code", "state", "final count")
그Hmisc
패키지에 기능이 있습니다.capitalize
첫 번째 단어를 대문자로 썼지만 두 번째 단어를 대문자로 쓰는 방법을 잘 모르겠습니다.의 도움말 페이지capitalize
이 작업을 수행할 수 있다고는 할 수 없습니다.
library(Hmisc)
capitalize(name)
# [1] "Zip code" "State" "Final count"
원하는 항목:
c("Zip Code", "State", "Final Count")
세 단어 문자열은 어떻습니까?
name2 <- c("I like pizza")
타이틀 케이스에도 base-R 솔루션이 내장되어 있습니다.
tools::toTitleCase("demonstrating the title case")
## [1] "Demonstrating the Title Case"
또는
library(tools)
toTitleCase("demonstrating the title case")
## [1] "Demonstrating the Title Case"
대문자화를 수행하기 위한 기본 R 함수는 다음과 같습니다.toupper(x)
의 도움말 파일에서?toupper
필요한 작업을 수행하는 기능이 있습니다.
simpleCap <- function(x) {
s <- strsplit(x, " ")[[1]]
paste(toupper(substring(s, 1,1)), substring(s, 2),
sep="", collapse=" ")
}
name <- c("zip code", "state", "final count")
sapply(name, simpleCap)
zip code state final count
"Zip Code" "State" "Final Count"
편집 이것은 단어 수에 관계없이 모든 문자열에 대해 작동합니다.
simpleCap("I like pizza a lot")
[1] "I Like Pizza A Lot"
시작 부분에서 시작하는 정규식과 일치^
또는 공백 뒤에[[:space:]]
그리고 그 뒤에 알파벳 문자가 옵니다.[[:alpha:]]
전역적으로 (gingsub) 이러한 모든 발생을 일치하는 시작 또는 공백과 일치하는 알파벳 문자의 대문자 버전으로 대체합니다.\\1\\U\\2
이 작업은 perl 스타일 정규식 일치를 사용하여 수행해야 합니다.
gsub("(^|[[:space:]])([[:alpha:]])", "\\1\\U\\2", name, perl=TRUE)
# [1] "Zip Code" "State" "Final Count"
대체 인수에 대한 자세한 내용은 다음과 같습니다.gsub()
,\\1
'의 부분을 사용합니다.x
첫 번째 하위 표현', 즉 부분과 일치합니다.x
궁합(^|[[:spacde:]])
.저도 마찬가지예요.\\2
의 부분을 사용하라고 말합니다.x
두 번째 하위 표현과 일치([[:alpha:]])
.그\\U
를 사용하여 구문을 사용할 수 있습니다.perl=TRUE
다음 문자를 대문자로 만드는 것을 의미합니다.그래서 "Zip code"의 경우,\\1
"Zip"입니다.\\2
"코드"입니다.\\U\\2
는 "코드"이며,\\1\\U\\2
는 "Zip Code"입니다.
그?regexp
페이지는 정규 표현을 이해하는 데 도움이 됩니다.?gsub
일을 정리하기 위해.
다음에서 이 기능 사용stringi
꾸러미
stri_trans_totitle(c("zip code", "state", "final count"))
## [1] "Zip Code" "State" "Final Count"
stri_trans_totitle("i like pizza very much")
## [1] "I Like Pizza Very Much"
대안:
library(stringr)
a = c("capitalise this", "and this")
a
[1] "capitalise this" "and this"
str_to_title(a)
[1] "Capitalise This" "And This"
시도:
require(Hmisc)
sapply(name, function(x) {
paste(sapply(strsplit(x, ' '), capitalize), collapse=' ')
})
다음에 대한 도움말 페이지?toupper
:
.simpleCap <- function(x) {
s <- strsplit(x, " ")[[1]]
paste(toupper(substring(s, 1,1)), substring(s, 2),
sep="", collapse=" ")
}
> sapply(name, .simpleCap)
zip code state final count
"Zip Code" "State" "Final Count"
이제 패키지에 함수가 포함됩니다.capitalizeStrings
.
library("BBmisc")
capitalizeStrings(c("the taIl", "wags The dOg", "That Looks fuNny!")
, all.words = TRUE, lower.back = TRUE)
[1] "The Tail" "Wags The Dog" "That Looks Funny!"
하위 문자열 및 정규식을 사용하는 대체 방법:
substring(name, 1) <- toupper(substring(name, 1, 1))
pos <- regexpr(" ", name, perl=TRUE) + 1
substring(name, pos) <- toupper(substring(name, pos, pos))
snakecase 패키지를 사용할 수도 있습니다.
install.packages("snakecase")
library(snakecase)
name <- c("zip code", "state", "final count")
to_title_case(name)
#> [1] "Zip Code" "State" "Final Count"
# or
to_upper_camel_case(name, sep_out = " ")
#> [1] "Zip Code" "State" "Final Count"
https://github.com/Tazinho/snakecase
이것은 모든 주요 단어에 대문자를 제공합니다.
library(lettercase)
xString = str_title_case(xString)
다음을 사용하는 다른 버전StrCap
에DescTools
Text = c("This is my phrase in r", "No, this is not my phrase in r")
DescTools::StrCap(Text) # Default only first character capitalized
[1] "This is my phrase in r" "No, this is not my phrase in r"
DescTools::StrCap(Text, method = "word") # Capitalize each word
[1] "This Is My Phrase In R" "No This Is Not My Phrase In R"
> DescTools::StrCap(Text, method = "title") # Capitalize as in titles
[1] "This Is My Phrase in R" "No, This Is Not My Phrase in R"
◦ 한 줄
◦ 하나의 기존 함수, 새 패키지 없음
◦ 목록/모든 단어에서 작동하는
✓ 첫 번째 문자는 대문자로 표시하고 나머지 단어는 아래로 표시합니다.
name <- c("zip CODE", "statE", "final couNt")
gsub("([\\w])([\\w]+)", "\\U\\1\\L\\2", name, perl = TRUE)
[1] "Zip Code" "State" "Final Count"
많이 사용할 계획이라면 포장지 기능을 만들 수 있을 것 같습니다.
capFirst <- function(x) gsub("([\\w])([\\w]+)", "\\U\\1\\L\\2", x, perl = TRUE)
capFirst(name)
특수 문자가 있는 경우 대신 다음과 같은 접두사를 사용할 수 있습니다.
capFirst <- function(x) gsub("(\\p{L})(\\p{L}+)", "\\U\\1\\L\\2", x, perl = TRUE)
capFirst(name)
펄은 대문자나 소문자로 만드는 방법을 모른다는 것을 제외하고는...그래서 항상 있습니다.
stringi::stri_trans_totitle(c("zip CODE", "éTAts", "final couNt"))
#[1] "Zip Code" "États" "Final Count"
다음은 사용할 필요가 없는 허용된 답변에 대한 약간의 개선 사항입니다.sapply()
또한 첫 번째 문자가 아닌 문자는 강제로 낮춥니다.
titleCase <- Vectorize(function(x) {
# Split input vector value
s <- strsplit(x, " ")[[1]]
# Perform title casing and recombine
ret <- paste(toupper(substring(s, 1,1)), tolower(substring(s, 2)),
sep="", collapse=" ")
return(ret)
}, USE.NAMES = FALSE)
name <- c("zip CODE", "statE", "final couNt")
titleCase(name)
#> "Zip Code" "State" "Final Count"
이것은 일부 사람들에게 유용할 수 있습니다.단어가 대문자로 표시되면 먼저 소문자로 만들어야 합니다.
tools::toTitleCase("FRANCE")
[1] "FRANCE"
와는 반대로
tools::toTitleCase(tolower("FRANCE"))
[1] "France"
언급URL : https://stackoverflow.com/questions/6364783/capitalize-the-first-letter-of-both-words-in-a-two-word-string
'IT' 카테고리의 다른 글
엔티티 디렉토리가 구성 파일에 설정되지 않은 경우 ORM 유형이 엔티티를 찾을 수 없음 (0) | 2023.06.12 |
---|---|
숨겨진 입력이 true/false가 아닌 value="value"인 이유는 무엇입니까? (0) | 2023.06.12 |
ggplot2에서 축 제목 및 레이블 크기 변경 (0) | 2023.06.12 |
비주얼 스튜디오 코드 컴파일러/디버거를 GCC로 설정하려면 어떻게 해야 합니까? (0) | 2023.06.12 |
판다 데이터 프레임에서 모든 0이 있는 행 삭제 (0) | 2023.06.12 |