Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   функция изменения первых букв слова на верхний регистр (https://javascript.ru/forum/misc/69440-funkciya-izmeneniya-pervykh-bukv-slova-na-verkhnijj-registr.html)

Alexsandr 22.06.2017 15:57

функция изменения первых букв слова на верхний регистр
 
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 ) !== " "
не работает, предполагалось что работать будет так если символ равен пустой строке и за ним идет символ не пустая строка то этот символ надо перевести в верхний регистр

ruslan_mart 22.06.2017 16:10

const bigword = str => str.replace(/(?:^|\s)[a-zа-яё]/gi, m => m.toUpperCase());

рони 22.06.2017 16:16

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(" привет тест"));

ruslan_mart 22.06.2017 16:33

Кстати, если пишете на 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(" привет тест"));

рони 22.06.2017 16:39

Ruslan_xDD,
ок!:)

Alexsandr 22.06.2017 17:17

я не понимаю что за значки ? в коде
я прохожу курс на hexlet там мы это не проходили
Задачу надо решить именно с помощью указанных в коде приемов
if (str.charAt(i) === " " && str.charAt( b = i + 1 ) !== " "

и почему не работает это условие?

рони 22.06.2017 17:19

Цитата:

Сообщение от Alexsandr
почему не работает это условие?

потому что следующего элемента может не быть

Alexsandr 22.06.2017 17:23

ввожу hellow world
выходит Hellow world
но ведь между ними есть пробел и следующий символ w

рони 22.06.2017 17:24

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(" привет тест"));

Alexsandr 22.06.2017 17:26

сделал ошибку
result += str[i].toUpperCase();
исправил
result += str[b].toUpperCase();
b это i +1 то есть следующий за пробелом символ


Часовой пояс GMT +3, время: 11:21.