js下劃線和駝峰互相轉換的實現(多種方法)
應用場景:
有時候傳給後端的參數是駝峰命名,回顯的時候是下劃線,這個時候就需要修改key值
方法一:正則表達式 (推薦)
駝峰式轉下橫線:
function toLowerLine(str) { var temp = str.replace(/[A-Z]/g, function (match) { return "_" + match.toLowerCase(); }); if(temp.slice(0,1) === '_'){ //如果首字母是大寫,執行replace時會多一個_,這裡需要去掉 temp = temp.slice(1); } return temp; }; console.log(toLowerLine("TestToLowerLine")); //test_to_lower_line console.log(toLowerLine("testToLowerLine")); //test_to_lower_line
下橫線轉駝峰式:
function toCamel(str) { return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) { return $1 + $2.toUpperCase(); }); } console.log(toCamel('test_to_camel')); //testToCamel
方法二:利用數組的 reduce 方法實現
駝峰式轉下橫線:
function doLowerLine(previousValue, currentValue, currentIndex, array){ if(/[A-Z]/.test(currentValue)){ currentValue = currentValue.toLowerCase(); if(currentIndex===0){ return previousValue + currentValue; }else{ return previousValue + '_' + currentValue; } }else{ return previousValue + currentValue; } } function toLowerLine(arr){ if(typeof arr === 'string'){ arr = arr.split(''); } return arr.reduce(doLowerLine,''); } var a = 'TestToLowerLine'; var res1 = toLowerLine(a); //test_to_lower_line var res2 = [].reduce.call(a,doLowerLine,''); //test_to_lower_line
下橫線轉駝峰式:
function doCamel(previousValue, currentValue, currentIndex, array){ if(currentValue === '_'){ return previousValue + currentValue.toUpperCase(); }else{ return previousValue + currentValue; } } function toCamel(str) { if(typeof str === 'string'){ str = str.split(''); //轉為字符數組 } return str.reduce(doCamel); } console.log(toCamel('test_to_camel')); //TestToCamel
方法三:利用數組的 map 方法實現
駝峰式轉下橫線:
function doLowerLine(val, index, arr){ if(/[A-Z]/.test(val)){ if(index===0){ return val.toLowerCase(); }else{ return '_'+val.toLowerCase(); } }else{ return val; } } function toLowerLine(arr){ if(typeof arr === 'string'){ return [].map.call(arr,doLowerLine).join(''); // Array.prototype.map.call(arr, doLowerLine).join(''); }else{ return arr.map(doLowerLine).join(''); } } var a = 'TestToLowerLine'; var res1 = [].map.call(a,doLowerLine).join(''); //test_to_lower_line var res2 = toLowerLine(a); //test_to_lower_lin
JS字符串的下劃線命名和駝峰命名轉換
1.駝峰轉連字符:
var s = "fooStyleCss"; s = s.replace(/([A-Z])/g,"-$1").toLowerCase(); //利用正則進行替換,簡潔明瞭,很棒
2.轉駝峰
var s1 = "foo-style-css"; s1 = s1.replace(//-(/w)/g, function(all, letter){ return letter.toUpperCase(); }); //這段2看的不是很明白
於是自己寫一個,^_^,這個很容易懂吧,就是代碼多瞭點;
var s = "style-sheet-base"; var a = s.split("-"); var o = a[0]; for(var i=1;i<a.length;i++){ o = o + a[i].slice(0,1).toUpperCase() + a[i].slice(1); }
再寫一個,這次用正則:
var s1 = "style-sheet-base"; s1 = s1.replace(//-(/w)/g, function(x){return x.slice(1).toUpperCase();});
到此這篇關於js下劃線和駝峰互相轉換的實現(多種方法)的文章就介紹到這瞭,更多相關js下劃線和駝峰互相轉換內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- js算法實例之字母大小寫轉換
- 利用JavaScript為句子加標題的3種方法示例
- 深入詳解JS函數的柯裡化
- js如何查找json數據中的最大值和最小值方法
- 一篇文章帶你瞭解JavaScript的包裝類型