Страницы

Поиск по вопросам

вторник, 18 февраля 2020 г.

Вернуть строку, где элементы с четными индексами будут переведены в верхний регистр

#javascript


Привет всем, 

Суть задачи: написать функцию которая принимает в параметры строку, и возвращает
её, где всё элементы с четными индексами переведены в верхний регистр.

Например: 

 toWeirdCase( "Weird string case" );//=> returns "WeIrD StRiNg CaSe"




function toWeirdCase(s){
    var str = s.toLowerCase().split(' '); // Переводим строку в нижний регистр, и
разбиваем на массив. 
    for(var i = 0; i < str.length; i++){ // проходимся циклом по этим массивам
        var s = str[i].split('').forEach(function (item, j/*индекс текущего элемента*/)
{ // разбиваем уже сложенные элементы на массивы, и попутно делаем проверку на четность
индекса
            if (j % 2 === 0){
                item.toUpperCase(); // переводим элемент с четным индексом в верхний
регистр
                //console.log(item.toUpperCase()); // так выводит всё четные элемент
в верхнем регистре.
            }
        });
        console.log(s);
    }
}

console.log(toWeirdCase("Weird string case"));




Вот не могу понять как теперь, собрать обратно всё в одну сроку.
Кто может ткните носом меня, в сторону правильного решения :) 
    


Ответы

Ответ 1



Вот решение вопроса без прохождения по двум циклам. В функции split если задать параметр пустую строку то он разрезает строку по символам, вот проходим по нему каждый четный символ переводим в верхний регистр, но не считаем прабелы.

Ответ 2



function toWeirdCase(s) { var str = s.toLowerCase().split(' '); var result = ''; for (var i = 0; i < str.length; i++) { for (var j = 0; j < str[i].length; j++) { if (j % 2 === 0) { result += str[i][j].toUpperCase(); } else { result += str[i][j]; } } result += ' '; } return result; } console.log(toWeirdCase("Weird string case"));

Ответ 3



зачем так громоздить? вот вариант на регулярках. правда немного растянуто, но что бы понятно было спец. так сделал. function replacer(str, $1, $2, offset, s) { return $2.replace(/(.)(.)/gi, uper) + ' '; // ищем четное и нечетное и кидаем в uper } function uper (str, $1, $2, offset, s) { return $1.toUpperCase()+$2; // берем первый символ делаем, большим плюсуем второй } const str = 'Lorem ipsum dolor sit amet'; console.log(str.replace(/(^|\s*)(\w*)(^|\s*)/g, replacer)) // ищем слова и кидаем найденое в функцию replacer

Комментариев нет:

Отправить комментарий