Cómo poner en mayúscula la primera letra y en minúsculas el resto de la cadena

Aug 20 2020

Estoy tratando de poner en mayúscula la primera letra de solo la primera palabra de una oración.

Estos son los datos en el archivo tsx {this.text ({id:, downloadPriceHistorydefaultMessage: 'Download Price History'})} la identificación que se muestra arriba proviene de la base de datos donde podría enviarse a la API en varias formas.

He intentado usar esta lógica a continuación:

export function titleCase(string) {
    string = 'hello World';
    const sentence = string.toLowerCase().split('');
      for (let i = 0; i < sentence.length; i++) {
          sentence[i] = sentence[i][0].toUpperCase() + sentence[i];
    }
     return sentence;

}

Por ejemplo, para la entrada "Download Price History", el resultado debería ser "Download price history".

Respuestas

4 iota Aug 20 2020 at 18:36

Solo necesita poner en mayúscula la primera letra y concatenarla con el resto de la cadena convertida a minúsculas.

function titleCase(string){
  return string[0].toUpperCase() + string.slice(1).toLowerCase();
}
console.log(titleCase('Download Price History'));

Esto también se puede lograr con CSS estableciendo text-transformto lowercasepara todo el elemento y usando el ::first-letterpseudo elemento para establecer text-transformto uppercase.

.capitalize-first {
  text-transform: lowercase;
}
.capitalize-first::first-letter {
  text-transform: uppercase;
}
<p class="capitalize-first">Download Price History</p>

2 Manas Aug 20 2020 at 18:35

intente - ponga el resto de la cadena en minúsculas también.

export function titleCase(string) {
     return string[0].toUpperCase() + string.substr(1).toLowerCase()
}
1 codythecoder Aug 20 2020 at 18:41

¿Por qué no poner en minúsculas toda la cadena y en mayúsculas solo la primera letra de la nueva cadena?

function titleCase(string) {
    let sentence = string.toLowerCase();
    let titleCaseSentence = sentence.charAt(0).toUpperCase() + sentence.substring(1, sentence.length);
    return titleCaseSentence;
}

(Además, está borrando su parámetro de la función con esa primera línea)

    string = 'hello World';
1 MuriloGóesdeAlmeida Aug 20 2020 at 18:43

Mi sugerencia es que obtenga el primer elemento de la cadena y lo ponga en mayúsculas y obtenga el resto de la cadena y aplique la función en minúsculas.

titleCase(string) {
  return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
1 Constantin Aug 20 2020 at 18:36

Usando CSS:

p {
  text-transform: lowercase;
}
p::first-letter {
  text-transform: uppercase
}

Usando JS:

const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1).toLowercase();