Это может быть кратко сделано с помощью регулярных выражений lookahead ( живая демонстрация ):
function splitCamelCaseToString(s) {
return s.split(/(?=[A-Z])/).join(' ');
}
(Я думал, что g
(глобальный) флаг был необходим, но как ни странно, это не в данном конкретном случае.)
Использование функции lookahead with split
гарантирует, что совпавшая заглавная буква не будет использоваться, и избегает использования начального пробела, если вам нужно иметь дело с UpperCamelCase. Чтобы использовать первую букву каждой буквы, вы можете использовать:
function splitCamelCaseToString(s) {
return s.split(/(?=[A-Z])/).map(function(p) {
return p.charAt(0).toUpperCase() + p.slice(1);
}).join(' ');
}
Метод map
массива является функцией ES5, но вы все равно можете использовать его в старых браузерах с некоторым кодом из MDC . Кроме того, вы можете перебирать элементы массива, используя for
цикл.