daniilborovkov
@daniilborovkov
Веб-разработчик. java-junior

Как правильно применить регулярные выражения?

Есть задание: Дана строка. С помощью магических манипуляций на JS нужно сделать так, чтобы на выходе все первые символы слов были в верхнем регистре, а все остальные в нижнем. Я чую своим седалищем, что без RegExp не обойтись, применил. Есть даже почти идеально работающий код:
function titleCase(str) {
    var str = str.toLowerCase().replace(/\b./g, function(m){
        return m.toUpperCase();
    });
    return str;
}

titleCase("I'm a little tea pot");
titleCase("HERE IS MY HANDLE HERE IS MY SPOUT");


Но вот незадача: в первом случае вместо
"I'm"
выводит
I'M
. Как исправить?
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
magalex
@magalex
Архитектор распределённых систем управления
function titleCase(str) {
    var str = str.toLowerCase().replace(/\s[a-zA-Z]/g, function(m){
        return m.toUpperCase();
    });
    return str[0].toUpperCase() + str.substr(1);
}


UPD: Это для случая, когда начало слова - это символ, стоящий сразу после пробельного символа (пробел, табуляция, переводы строки)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ivanq
@Ivanq
Знаю php, js, html, css
Вы идиот!
Здесь не нужны регулярные выражения - можно обойтись
return str[0].toUpperCase() + str.substr(1).toLowerCase();


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

Войдите, чтобы написать ответ

Похожие вопросы