Inilah versi fungsi camelCase saya:
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);
};
})();
Ini menangani semua kasus tepi berikut:
- mengurus garis bawah dan tanda hubung secara default (dapat dikonfigurasi dengan parameter kedua)
- string dengan karakter unicode
- string yang diakhiri dengan tanda hubung atau garis bawah
- string yang memiliki tanda hubung atau garis bawah berurutan
Berikut tautan ke tes langsung: http://jsfiddle.net/avKzf/2/
Berikut adalah hasil dari tes:
- input: "ab-cd-ef", hasil: "abCdEf"
- input: "ab-cd-ef-", hasil: "abCdEf"
- input: "ab-cd-ef--", hasil: "abCdEf"
- masukan: "ab-cd - ef--", hasil: "abCdEf"
- masukan: "--ab-cd - ef--", hasil: "AbCdEf"
- masukan: "--ab-cd -__- ef--", hasil: "AbCdEf"
Perhatikan bahwa string yang dimulai dengan pembatas akan menghasilkan huruf besar di awal. Jika bukan itu yang Anda harapkan, Anda selalu dapat menggunakan lcfirst. Ini pertama saya jika Anda membutuhkannya:
function lcfirst(str) {
return str && str.charAt(0).toLowerCase() + str.substring(1);
}