Как сделать первые буквы заглавной, кроме первого слова
Исходный код
function camelCase(str) {
}
console.log(camelCase('some function name'))
Должно получится так someFunctionName
Ответы (3 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Регулярным выражением выделяем пробелы и символ сразу за ними:
один или больше пробелов
|
---
/\s+(.)/g --- искать совпадение больше одного раза
---
|
группа в которую попадёт первый символ следующего слова
'some function name' -> ' f', ' n'
-- --
Пробелы выбрасываем, символу поднимаем регистр. Всё внутри вызова str.replace.
function camelCase(str) {
return str.replace(/\s+(.)/g, m => m[1].toUpperCase());
}
console.log(camelCase('some function name'))
someFunctionName
P.S. Зачем вам function? Стрелочная функция компактнее и легче читается:
const camelCase = str => str.replace(/\s+(.)/g, m => m[1].toUpperCase());
Автор решения: De.Minov
→ Ссылка
Задание с CodeWars?
Я когда-то выполнял его и решение было таким:
function toCamelCase(str){
if(typeof str === 'string' && str.length > 0) {
str = str.split(/-|_|\s/);
for(let i = 0; i < str.length; i++) {
if(i != 0 && str[i][0] != str[i][0].toUpperCase())
str[i] = str[i][0].toUpperCase() + str[i].slice(1);
}
return str.join('');
} return '';
}
console.info(toCamelCase('some function name'));
Но больше всего мне понравился данный вариант:
function toCamelCase(str){
return str.replace(/[-_\s](.)/g, (_, c) => c.toUpperCase());
}
console.info(toCamelCase('some function name'));
Автор решения: Алексей Шиманский
→ Ссылка
Зачем какие-то регулярки, какие-то реплэйсы, какие-то многоходовки с map, split, join и пр, если решается одним ходом цикла...
function camelCase(str) {
let newStr = '';
let prevChar = '';
for (let char in str) {
let currentChar = str[char];
newStr += prevChar === ' ' && currentChar !== ' '
? currentChar.toUpperCase()
: (currentChar === ' ' ? '' : currentChar);
prevChar = str[char];
}
return newStr;
}
console.log(camelCase('some function name'))