Estoy tratando de hacer un sistema de autocorrección, y cuando un usuario escribe una palabra con una letra mayúscula, la autocorrección no funciona. Para solucionar esto, hice una copia de la cadena escrita, apliqué .lowercaseString y luego las comparé. Si la cadena está mal escrita, debería corregir la palabra. Sin embargo, entonces la palabra que reemplaza la palabra escrita es minúscula. Entonces necesito aplicar .uppercaseString solo a la primera letra. Originalmente pensé que podría usar
nameOfString[0]
pero esto aparentemente no funciona. ¿Cómo puedo poner la primera letra de la cadena en mayúscula y luego poder imprimir la cadena completa con la primera letra en mayúscula?
¡Gracias por cualquier ayuda!
fuente
.capitalizedString
ya no funciona en Xcode 7 Beta 4. Las cadenas han cambiado un poco en Swift 2.0.Foundation
sonrisa tímida.uppercaseString
para eso.capitalized
ahora. Tenga en cuenta tambiéncapitalizedStringWith(_ locale:)
Swift 5.1 o posterior
Swift 5
fuente
UITextField
observadorUITextFieldTextDidChangeNotification
.para "Hello World"
o para "HOLA MUNDO"
fuente
Swift 4.0
o
Sin embargo, esto pone en mayúscula la primera letra de cada palabra
Documentación de Apple:
fuente
Para Swift 5:
fuente
isEmpty
e inicializar una cadena para reemplazar tampoco. Simplemente puede desenvolver el primer carácter y en caso de que falle simplemente devuelva nil. Esto se puede simplificar comovar firstCharacterUpperCase: String? { guard let first = first else { return nil } return lowercased().replacingCharacters(in: startIndex...startIndex, with: first.uppercased()) }
Para el primer carácter en el uso de palabras
.capitalized
en Swift y para uso de palabras completas.uppercased()
fuente
Swift 2.0 (línea única):
fuente
.localizedLowercaseString
al final para que funcione con cadenas como: aNYsTring.String(nameOfString.characters.prefix(1)).uppercaseString + String(nameOfString.characters.dropFirst()).localizedLowercaseString
Swift 3 (xcode 8.3.3)
Todos los primeros caracteres de cadena en mayúscula
Todos los caracteres en mayúscula
Solo primer carácter en mayúscula de la cadena
fuente
En Swift 5
https://www.hackingwithswift.com/example-code/strings/how-to-capitalize-the-first-letter-of-a-string
usar con tu cuerda
fuente
Estoy obteniendo el primer personaje duplicado con la solución de Kirsteins. Esto capitalizará el primer personaje, sin ver doble:
No sé si es más o menos eficiente, solo sé que me da el resultado deseado.
fuente
countElements
es justocount
.Desde Swift 3 puedes usar fácilmente
textField.autocapitalizationType = UITextAutocapitalizationType.sentences
fuente
Aquí hay una versión para Swift 5 que usa la API de propiedades escalares Unicode para rescatar si la primera letra ya está en mayúscula o no tiene una noción de mayúsculas y minúsculas:
fuente
return first.uppercased() + dropFirst()
o un trazador de líneas(first?.uppercased() ?? "") + dropFirst()
Poner en mayúscula el primer carácter de la cadena.
fuente
En Swift 3.0 (esto es un poco más rápido y seguro que la respuesta aceptada):
nameOfString.capitalized no funcionará , capitalizará todas las palabras en la oración
fuente
Créditos a Leonardo Savio Dabus:
Me imagino que la mayoría de los casos de uso es obtener una carcasa adecuada:
fuente
Mi solución:
fuente
Al incorporar las respuestas anteriores, escribí una pequeña extensión que escribe en mayúscula la primera letra de cada palabra (porque eso es lo que estaba buscando y pensé que alguien más podría usarla).
Humildemente presento:
fuente
Swift 4
fuente
Esta es la forma en que lo hice en pequeños pasos, es similar a @Kirsteins.
fuente
También funciona, simplemente pasa tu cadena y recupera una en mayúscula.
fuente
Actualización de Swift 3
El
replaceRange
func es ahorareplaceSubrange
fuente
Soy parcial a esta versión, que es una versión limpia de otra respuesta:
Se esfuerza por ser más eficiente al evaluar solo los caracteres propios una vez, y luego usa formas consistentes para crear las subcadenas.
fuente
Swift 4 (Xcode 9.1)
fuente
capitalized
exactamente para este propósitoSi desea poner en mayúscula cada palabra de cadena, puede usar esta extensión
Swift 4 Xcode 9.2
Usado
fuente
.capitalized
Si su cadena es todo mayúsculas, el siguiente método funcionará
Esta extensión te ayudará
fuente
.capitalized
.capitalized
devolverá (Esto es un niño) y este método devolverá (Esto es un niño) Ambos son diferentes. (Por favor, + ve voto negativo o eliminar)return first.uppercased() + dropFirst()
o un regreso de línea(first?.uppercased() ?? "") + dropFirst()
Agregue esta línea en el método viewDidLoad ().
fuente
fuente
Para swift 5, puede hacer simplemente así:
Muestra: "abc" -> "Abc"
fuente