Это можно сделать кратко, используя regex lookahead ( live demo ):
function splitCamelCaseToString(s) {
return s.split(/(?=[A-Z])/).join(' ');
}
(я думал, что флаг g
(global) был необходим, но, как ни странно,это не в данном конкретном случае.)
Использование упреждения с 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
.