функция изменения первых букв слова на верхний регистр
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, время: 18:33. |