функция изменения первых букв слова на верхний регистр
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 то есть следующий за пробелом символ |
теперь выходит "Hello,Wworld!"
|
Alexsandr,
чем пост №9 не устраивает? |
Alexsandr,
шаблоном рег. выражения взять по границе слова. |
Все нормально устраивает, я решил задачу, посмотрел решение учителя и
export default (str) => {
let result = '';
for (let i = 0; i < length(str); i += 1) {
const shouldBeBig = str[i] !== ' ' && (i === 0 || str[i - 1] === ' ');/*создает константу которая что? Равняется символу который равен нулю или перед ним пробел? То есть при каждой итерации это константа проводит отбор?*/
result += shouldBeBig ?/* что за знак '?' первые вижу*/ toUpperCase(str[i]) : str[i];/* тоже непонятно что это ":"*/
}
return result;
};
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 03:16. |