JS實(shí)現(xiàn)駝峰字符串轉(zhuǎn)下劃線字符串的三種方法
需求如下:
將駝峰寫法的字符串轉(zhuǎn)為下劃線寫法的字符串
eg:輸入:"yiZhiXiaoKeLeYa"
輸出:"yi_zhi_xiao_ke_le_ya"
實(shí)現(xiàn)思路一:
可以使用正則表達(dá)式來實(shí)現(xiàn)駝峰字符串轉(zhuǎn)下劃線字符串:
function toUnderline(str) { return str.replace(/([A-Z])/g, '_$1').toLowerCase(); } console.log(toUnderline('yiZhiXiaoKeLeYa')); // 輸出 'yi_zhi_xiao_ke_le_ya' console.log(toUnderline('myCode')); // 輸出 'my_code'
/([A-Z])/g
是一個(gè)正則表達(dá)式,表示匹配所有大寫字母。_$1
中的 $1
表示正則表達(dá)式匹配到的第一個(gè)大寫字母,實(shí)現(xiàn)了在它前面添加下劃線的效果。最后,使用 toLowerCase()
將所有字母轉(zhuǎn)換成小寫。
實(shí)現(xiàn)思路二:
利用 String.prototype.split() 和 Array.prototype.join() 方法:
function toUnderline(str) { let result = ''; for (let i = 0; i < str.length; i++) { if (str[i] === str[i].toUpperCase()) { result += '_' + str[i].toLowerCase(); } else { result += str[i]; } } return result; } console.log(toUnderline('yiZhiXiaoKeLeYa')); // 輸出 'yi_zhi_xiao_ke_le_ya' console.log(toUnderline('myCode')); // 輸出 'my_code'
遍歷字符串中的每個(gè)字符,如果字符是大寫字母,則在其前面添加下劃線并轉(zhuǎn)化為小寫字母,否則直接拼接
實(shí)現(xiàn)思路三:
利用遞歸和 String.prototype.replace() 方法:
function toUnderline(str) { if (str.length <= 1) { return str.toLowerCase(); } let firstChar = str[0]; if (firstChar === firstChar.toUpperCase()) { firstChar = '_' + firstChar.toLowerCase(); } return firstChar + toUnderline(str.slice(1)); } console.log(toUnderline('yiZhiXiaoKeLeYa')); // 輸出 'yi_zhi_xiao_ke_le_ya' console.log(toUnderline('myCode')); // 輸出 'my_code'
將字符串從第二個(gè)字符開始傳入遞歸函數(shù)中處理,處理完成后在第一個(gè)字符前面根據(jù)大小寫添加下劃線。當(dāng)字符串長度小于等于 1 時(shí),直接轉(zhuǎn)化為小寫字母。
到此這篇關(guān)于JS實(shí)現(xiàn)駝峰字符串轉(zhuǎn)下劃線字符串的三種方法的文章就介紹到這了,更多相關(guān)JS駝峰字符串轉(zhuǎn)下劃線字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
子窗口、父窗口和Silverlight之間的相互調(diào)用
前兩天做 silverlight 的東西,主頁面打開一個(gè)子頁面,然后子頁面中包含一個(gè) silverlight 應(yīng)用程序那難免會(huì)涉及到他們?nèi)呦嗷フ{(diào)用的問題2010-08-08D3.js中data(), enter() 和 exit()的問題詳解
相信大多數(shù)人對(duì)D3.js并不陌生。這是一個(gè)由紐約時(shí)報(bào)可視化編輯 Mike Bostock與他斯坦福的教授和同學(xué)合作開發(fā)的數(shù)據(jù)文件處理的JavaScript Library,全稱叫做Data-Driven Documents,在d3.js中data(), enter() 和 exit()比較常見,下面給大家就這方面的知識(shí)給大家詳解2015-08-08用javascript關(guān)閉本窗口不彈出詢問框的方法
ie中用close關(guān)閉非open打開的窗口時(shí)回彈出一個(gè)對(duì)話框詢問用戶,怎么去掉這個(gè)框呢,在window.close之前加上window.top.opener = null就可以了2014-09-09Threejs實(shí)現(xiàn)滴滴官網(wǎng)首頁地球動(dòng)畫功能
這篇文章主要介紹了Threejs實(shí)現(xiàn)滴滴官網(wǎng)首頁地球動(dòng)畫效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07input鏈接頁面、打開新網(wǎng)頁等等的具體實(shí)現(xiàn)
input可以鏈接到某頁、返回、打開新網(wǎng)頁、打開無邊框的新窗口等等,本文整理了一些,感興趣的朋友可以參考下2013-12-12如何讓div span等元素能響應(yīng)鍵盤事件操作指南
在我這幾天的工作中遇到了一個(gè)問題,我有一個(gè)可編輯的div,并且在DIV里面還有一個(gè)可編輯的span,我想要讓span能響應(yīng)鍵盤事,想實(shí)現(xiàn)這種效果,應(yīng)該如何實(shí)踐呢2012-11-11javascript DOM對(duì)象的學(xué)習(xí)實(shí)例代碼
javascript DOM對(duì)象的學(xué)習(xí)實(shí)例代碼2009-06-06