Cómo puedo Convertir un Titulo del Tipo: «Сьюдад-де-Пикассо», о «Кастельон-де-ла-Плана», де-фактора правильного: «Сьюдад-де-Пикассо» о «Кастельон-де-ла-Плана».
NO funciona toTitleCase
не работает в одиночку.
Идея Альгуны ...
si pruebo de estas 2 formas
library(tools)
unlist(lapply(v, FUN=toTitleCase))
Me convierte los "De" y los "La" que no quiero
library(tools)
toTitleCase("la ciudad de Picasso")
Правила capitalizaciГіn сложные, независимо от языка ( Правил espaГ±ol ), однако, твоя идея состоит в том, чтобы работать с одним toTitleCase()
, алгоритм которого много mГЎs bГЎsico:
Конечно, он делает другие важные вещи, но bГЎsicamente относительно нее capitalizaciГіn работа - тот, который ты comentГ©. А следовательно преобразовывать cГіdigo оригинал в одну versiГіn regionalizada - относительно просто:
toTitleCaseSpanish <- function (text)
{
# Cadenas y patrones que no se capitalizan -------------------------------
# alone, para extensiones/nombres de archivo y textos que no nos interesa capitalizar
alone <- c("2D", "3D", "AIC", "BayesX", "GoF", "HTML", "LaTeX",
"MonetDB", "OpenBUGS", "TeX", "U.S.", "U.S.A.", "WinBUGS",
"aka", "et", "al.", "ggplot2", "i.e.", "jar", "jars",
"ncdf", "netCDF", "rgl", "rpart", "xls", "xlsx")
# either, podemos definir lista de palabras a No capitalizar
either <- c() # Podemos agregar listas de palabras que no queremos capitalizar
# Preposiciones y articulos que no capitalizaremos como patrón regex
lpat <- c('^(a|ante|bajo|cabe|con|contra|de|desde|durante|en|entre|hacia|hasta|le|mediante|para|por|según|sin|so|sobre|tras|versus|vía|el|la|los|las|un|uno|una|unos|unas|al|del))
# ------------------------------------------------------------------------
titleCase1 <- function(x) {
do1 <- function(x) {
x1 <- substring(x, 1L, 1L)
if (nchar(x) >= 3L && x1 %in% c("'", "\""))
paste0(x1, toupper(substring(x, 2L, 2L)), tolower(substring(x,
3L)))
else paste0(toupper(x1), tolower(substring(x, 2L)))
}
if (is.na(x))
return(NA_character_)
xx <- .Call("splitString", x, " -/\"()\n")
alone <- xx %in% c(alone, either)
alone <- alone | grepl("^'.*'$", xx)
havecaps <- grepl("^[[:alpha:]].*[[:upper:]]+", xx)
l <- grepl(lpat, xx, ignore.case = TRUE)
l[1L] <- FALSE
ind <- grep("[-:]$", xx)
ind <- ind[ind + 2L <= length(l)]
ind <- ind[(xx[ind + 1L] == " ") & grepl("^['[:alnum:]]",
xx[ind + 2L])]
l[ind + 2L] <- FALSE
ind <- which(xx == "\"")
ind <- ind[ind + 1L <= length(l)]
l[ind + 1L] <- FALSE
xx[l] <- tolower(xx[l])
keep <- havecaps | l | (nchar(xx) == 1L) | alone
xx[!keep] <- sapply(xx[!keep], do1)
paste(xx, collapse = "")
}
if (typeof(text) != "character")
stop("'text' debe ser un vector de caracteres")
sapply(text, titleCase1, USE.NAMES = FALSE)
}
toTitleCaseSpanish(c('la ciudad de Picasso', 'castellón de la Plana'))
[1] "La Ciudad de Picasso" "Castellón de la Plana"
toTitleCaseSpanish(c('él altísimo'))
он печатается:[1] "Él Altísimo"
cuá l está согласно RAE: Вычеркнул в mayú sculas – Hubert Ronald 21.03.2019, 15:06