функция изменения первых букв слова на верхний регистр
const bigword = (str) => {
let result = "";
let b = 0;
for (let i = 0; i < str.length; i++){
if (str.charAt(i) === " " && str.charAt( b = i + 1 ) !== " " || i === 0 ) {
result += str[i].toUpperCase();
} else {
result += str.charAt(i);
}
}
return result;
}
проблема в том что условие if (str.charAt(i) === " " && str.charAt( b = i + 1 ) !== " "не работает, предполагалось что работать будет так если символ равен пустой строке и за ним идет символ не пустая строка то этот символ надо перевести в верхний регистр |
const bigword = str => str.replace(/(?:^|\s)[a-zа-яё]/gi, m => m.toUpperCase()); |
Alexsandr,
"use strict"
const bigword = (str) => {
let result = "";
let b = true;
for (let i = 0; i < str.length; i++){
result += b ? str[i].toUpperCase() : str.charAt(i);
b = str.charAt(i) === " ";}
return result;
}
alert(bigword(" привет тест"));
|
Кстати, если пишете на ES6, то можете спокойно использовать:
"use strict"
const bigword = (str) => {
let result = "";
let b = true;
for (let i of str){
result += b ? i.toUpperCase() : i;
b = i === " ";}
return result;
}
alert(bigword(" привет тест"));
|
Ruslan_xDD,
ок!:) |
я не понимаю что за значки ? в коде
я прохожу курс на hexlet там мы это не проходили Задачу надо решить именно с помощью указанных в коде приемов if (str.charAt(i) === " " && str.charAt( b = i + 1 ) !== " " и почему не работает это условие? |
Цитата:
|
ввожу hellow world
выходит Hellow world но ведь между ними есть пробел и следующий символ w |
Alexsandr,
"use strict"
const bigword = (str) => {
let result = "";
for (let i = 0; i < str.length; i++){
if ( i === 0 || str.charAt(i) !== " " && str.charAt( i - 1 ) === " " ) {
result += str[i].toUpperCase();
} else {
result += str.charAt(i);
}
}
return result;
}
alert(bigword(" привет тест"));
|
сделал ошибку
result += str[i].toUpperCase();исправил result += str[b].toUpperCase();b это i +1 то есть следующий за пробелом символ |
| Часовой пояс GMT +3, время: 13:18. |