Как сделать первую букву заглавной, а остальную часть строки строчной

Aug 20 2020

Я пытаюсь писать с заглавной буквы только первое слово в предложении.

Это данные в tsx-файле {this.text ({id:, downloadPriceHistorydefaultMessage: 'Download Price History'})}. Показанный выше идентификатор берется из базы данных, откуда он может быть отправлен в api в различных формах.

Я попытался использовать эту логику ниже:

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;

}

Например, для ввода "Download Price History"результат должен быть "Download price history".

Ответы

4 iota Aug 20 2020 at 18:36

Вам нужно только сделать первую букву заглавной и присоединить ее к остальной части строки, преобразованной в нижний регистр.

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

Этого также можно достичь с помощью CSS, установив text-transformзначение lowercaseдля всего элемента и используя ::first-letterпсевдоэлемент, чтобы установить text-transformзначение 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

попробуйте - сделайте остальную часть строки также строчными.

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

Почему бы просто не прописать всю строку в нижнем регистре, а в верхнем регистре - только первую букву новой строки?

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

(Кроме того, вы стираете свой параметр функции с этой первой строкой)

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

Я предлагаю вам взять первый элемент строки и ввести его в верхнем регистре, а затем получить оставшуюся строку и применить функцию нижнего регистра.

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

Используя CSS:

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

Используя JS:

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