İşte camelCase işlevi sürümüm:
var camelCase = (function () {
var DEFAULT_REGEX = /[-_]+(.)?/g;
function toUpper(match, group1) {
return group1 ? group1.toUpperCase() : '';
}
return function (str, delimiters) {
return str.replace(delimiters ? new RegExp('[' + delimiters + ']+(.)?', 'g') : DEFAULT_REGEX, toUpper);
};
})();
Aşağıdaki tüm uç durumları ele alır:
- varsayılan olarak hem alt çizgileri hem de kısa çizgileri dikkate alır (ikinci parametre ile yapılandırılabilir)
- unicode karakterli dizge
- tire veya alt çizgi ile biten dize
- ardışık kısa çizgi veya alt çizgi içeren dize
İşte canlı testlere bir bağlantı: http://jsfiddle.net/avKzf/2/
İşte testlerin sonuçları:
- girdi: "ab-cd-ef", sonuç: "abCdEf"
- girdi: "ab-cd-ef-", sonuç: "abCdEf"
- girdi: "ab-cd-ef--", sonuç: "abCdEf"
- girdi: "ab-cd - ef--", sonuç: "abCdEf"
- girdi: "--ab-cd - ef--", sonuç: "AbCdEf"
- girdi: "--ab-cd -__- ef--", sonuç: "AbCdEf"
Sınırlayıcılarla başlayan dizelerin başında büyük harfle sonuçlanacağına dikkat edin. Beklediğiniz bu değilse, her zaman lcfirst kullanabilirsiniz. İhtiyacınız olursa ilk lcfirim:
function lcfirst(str) {
return str && str.charAt(0).toLowerCase() + str.substring(1);
}