Пространство до строки в JavaScript

159
16 декабря 2018, 13:20

У меня программа, которая должна делать все слова с большой буквы. Я написал версию, которая делает слова с заглавной после первого слова. Надо сделать так, чтобы еще первое слово было с большой :

var word = prompt('Какие слова вам сделать с большой буквы? ');
var wordEnd = '';
for(i = 0; i < word.length; i++){
    wordEnd += (word[i - 1] == " " || word[i -1] == "") ? word[i].toUpperCase() : word[i];
}
alert(wordEnd);

Надо поставит условие, есть ли что-то вообще до буквы, вот я и думаю как обозначается пустота до строки.

Если предложите другие решения этой задачи, буду очень рад!

Answer 1

При проверке нулевого символа строки, предыдущий индекс будет -1, а так как такого поля в строке нет, результат будет undefined.

Следовательно, нужно добавить проверку на равенство undefined: word[i-1] == undefined

Пример:

var word = prompt('Какие слова вам сделать с большой буквы? '); 
var wordEnd = ''; 
for (i = 0; i < word.length; i++) { 
  wordEnd += (word[i - 1] == " " || word[i - 1] == "" || word[i - 1] == undefined) ? word[i].toUpperCase() : word[i]; 
} 
console.log(wordEnd);

Кроме того можно воспользоваться простой регуляркой:

var word = prompt('Какие слова вам сделать с большой буквы? '); 
var wordEnd = word.replace(/\b./g, $0 => $0.toUpperCase()); 
console.log(wordEnd);

READ ALSO
LEFT JOIN в sequelize

LEFT JOIN в sequelize

Использую mysql и sequelize в Nodejs проекте

185
Не работает маска ввода MaskedInput

Не работает маска ввода MaskedInput

Маска подключена два разаПервый раз работает второй - нет

181
Canvas HTML5. Случайные линии

Canvas HTML5. Случайные линии

Решил написать функцию рисования случайных линий:

171
Опять функция перерисовки яндекс карты

Опять функция перерисовки яндекс карты

Была тут подобная тема, но ее решение вообще не работает

321