Верхний регистр первого элемента строки в JavaScript

#javascript #string #uppercase #splice

#javascript #строка #верхний регистр #сращивание

Вопрос:

Ошибка показывает «AssertionError: ожидаемое значение «НИКОГДА НЕ СДАВАТЬСЯ» глубоко равно значению «НИКОГДА НЕ СДАВАТЬСЯ»«, и я не могу понять, почему пробел в начале строки игнорируется. Вот мой код:

 function letterCapitalize(str) {
  if (str === '') {
    return ''
  }
  let string = '' //array to string
  let word = str.split(' ')
  for (let i = 0; i < word.length; i  ) {
    if (word[i] !== '') {
      string = string   word[i][0].toUpperCase()   word[i].slice(1, word[i].length)   ' '
    } else if (word[i] === '') {
      string = ' '   string
    }
  }
  return string.slice(0, string.length - 1)
}
  

Примеры журнала консоли включают:

 let output1 = letterCapitalize('hello world');
console.log(output1); // "Hello World"
let output2 = letterCapitalize('javascript  is sexy ');
console.log(output2); // "Javascript  Is Sexy "
  

Комментарии:

1. Похоже, что вашему тесту требуется пробел в начале и один в конце.

2. я не уверен, на какую строку вы ссылаетесь;

3. В вашем else if вы добавляете пробел в начало вашей (целой) строки. Вы должны добавить его в конец вашей строки. (Как вы делаете в if .)

4. Пожалуйста, покажите нам код для тестового примера. Похоже, что для вашего теста требуется что-то еще, кроме заглавных букв.

5. @Ivar Я боюсь, что результатом теста по-прежнему остается «Ошибка утверждения: ожидаемое «НИКОГДА НЕ СДАВАТЬСЯ» глубоко равно » НИКОГДА НЕ СДАВАТЬСЯ » «. Проблема в том, что двойной пробел после «НИКОГДА» не появляется. возможно, переписать с использованием массива?

Ответ №1:

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

 const capitalize = str => {
  if (!str) return "";
  return str
    .split(" ")
    .map(el => el[0].toUpperCase()   el.slice(1))
    .join(" ");
}
  

Комментарии:

1. 1. Он возвращается как строковый тип. 2. возвращает пустую строку, когда задана пустая строка 3. возвращает » «, когда задано » » 4. возвращает «Вы можете это сделать», когда задано «вы можете это СДЕЛАТЬ» 5. возвращает «НИКОГДА НЕ СДАВАТЬСЯ», когда задано «Никогда не сдаваться» 6. возвращает «У вас естьЗадается идея «когда «у вас есть идея». 3,5 — это те, которые показывают ошибку. код ошибки 3 — AssertionError: ожидается, что » будет равно», а 5 равно 5. AssertionError: ожидается, что «НИКОГДА НЕ СДАВАТЬСЯ» будет глубоко равно «НИКОГДА НЕ СДАВАТЬСЯ»

2. Аааа, хорошо, теперь я понимаю.

3. Вы не должны удалять пробелы. Номер 5 показывает ошибку, потому что ваша функция удаляет пробел с конца.

4. Я думаю, что могу сохранить пробел в конце, добавив ‘ ‘, как я сделал в if . однако я не могу понять, почему двойной пробел после никогда не исчезает в моем коде и как их сохранить.