Кратчайшая реализация для заглавных слов в строке - это использование функций стрелок ES6:
'your string'.replace(/\b\w/g, l => l.toUpperCase())
// => 'Your String'
ES5-совместимая реализация:
'your string'.replace(/\b\w/g, function(l){ return l.toUpperCase() })
// => 'Your String'
Регулярное выражение в основном соответствует первой букве каждого слова в данной строке и преобразует только эту букву в верхний регистр:
- \ b соответствует границе слова (начало или конец слова);
- \ w соответствует следующему метасимволу [a-zA-Z0-9].
Вместо символов ASCII обратитесь к этому решению вместо
'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())
Это регулярное выражение соответствует первой букве и каждой непробельной букве, которой предшествует пробел в данной строке, и преобразует только эту букву в верхний регистр:
- \ s соответствует пробелу
- \ S соответствует непробельному символу
- (x | y) соответствует любой из указанных альтернатив
Группа без захвата могла бы использоваться здесь следующим образом /(?:^|\s)\S/g
, хотя флаг g
в нашем регулярном выражении не будет захватывать подгруппы в любом случае.
Ура!