यहाँ कैमलकेस फ़ंक्शन का मेरा संस्करण है:
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);
};
})();
यह निम्नलिखित सभी मामलों को संभालता है:
- डिफ़ॉल्ट रूप से अंडरस्कोर और हाइफ़न दोनों का ध्यान रखता है (दूसरे पैरामीटर के साथ कॉन्फ़िगर करने योग्य)
- यूनिकोड वर्णों के साथ तार
- स्ट्रिंग जो हाइफ़न या अंडरस्कोर के साथ समाप्त होती है
- स्ट्रिंग जिसमें लगातार हाइफ़न या अंडरस्कोर होते हैं
यहां लाइव टेस्ट के लिए लिंक दिया गया है: http://jsfiddle.net/avKzf/2/
यहाँ परीक्षण से परिणाम हैं:
- इनपुट: "ab-cd-ef", परिणाम: "abCdEf"
- इनपुट: "ab-cd-ef-", परिणाम: "abCdEf"
- इनपुट: "ab-cd-ef--", परिणाम: "abCdEf"
- इनपुट: "ab-cd - ef--", परिणाम: "abCdEf"
- इनपुट: "--ab-cd - ef--", परिणाम: "AbCdEf"
- इनपुट: "--ab-cd -__- ef--", परिणाम: "AbCdEf"
ध्यान दें कि जो तार सीमांकक के साथ शुरू होते हैं, वे शुरुआत में एक बड़े अक्षर के परिणामस्वरूप होंगे। यदि वह नहीं है जो आप उम्मीद करेंगे, तो आप हमेशा lcfirst का उपयोग कर सकते हैं। यहाँ मेरी lcfirst है अगर आप की जरूरत है:
function lcfirst(str) {
return str && str.charAt(0).toLowerCase() + str.substring(1);
}