2019-06-22 js字符串操作的方法匯總

https://www.cnblogs.com/guoyeqiang/p/8178336.html

一、字符串操作函數(shù)

1椰拒、字符串轉(zhuǎn)換

可以將任何類型的數(shù)據(jù)都轉(zhuǎn)換成字符串嫉称,有以下三種方法

var num=24;var mystr=num.toString();? //"24"? ? ? 方法一

var num=24;var mystr=String(num);? //"24"? 方法二

var num=24;var mystr=""+ num;? //"24" 方法三

2、字符串分割

將字符串進行拆分返回一個新的數(shù)組乾吻,JavaScript就給我們提供了一個非常方便的函數(shù):

var mystr="aaa,bbb,ccc";

var arr1=mystr.split(",");//["aaa","bbb","ccc"];

var arr2=mystr.split("");//['a','a','a',',''b','b','b',',''c','c','c']

split()的第二個參數(shù)髓梅,表示返回的字符串數(shù)組的最大長度

var mystr="aaa,bbb,ccc";

var arr1=mystr.split(",",2); // ["aaa","bbb"];

3、字符串替換

var mystr="wozaijinxingzifuchuantihuancaozuo,zifuchuantihuano";

var replaceStr=mystr.replace("zifuchuan","");//wozaijinxing tihuancaozuo,zifuchuantihuano

var replaceStr=mystr.replace(/zifuchuan/,"");//wozaijinxing tihuancaozuo,zifuchuantihuano

var replaceStr=mystr.replace(/zifuchuan/g,"");//wozaijinxing tihuancaozuo, tihuano

默認只進行第一次匹配操作的替換绎签,想要全局替換枯饿,需要置上正則全局標識g

4、獲取字符串長度

var mystr="qingchenghuwoguoxiansheng,woaishenghuo,woaiziji";

var arrLength=mystr.length;//47

5诡必、查詢子字符串

判斷字符串內(nèi)是否包含子串奢方,不少開發(fā)者會使用for循環(huán)來判斷,而忘記了JavaScript提供子串函數(shù):

indexOf(),該Of() 方法對大小寫敏感袱巨。返回字符串中一個子串第一處出現(xiàn)的索引(從左到右搜索)阁谆。如果沒有匹配項,返回 -1 愉老。

var mystr="Hello world!";

var index=mystr.indexOf("llo");//2

var index1=mystr.indexOf("l");//2

var index2=mystr.indexOf("l",3);//3

lastIndexOf()场绿,該方法對大小寫敏感。返回字符串中一個子串最后一處出現(xiàn)的索引(從右到左搜索)嫉入,如果沒有匹配項焰盗,返回 -1 。

var mystr="Hello world!";

var index=mystr.lastIndexOf("llo");//2

var index1=mystr.lastIndexOf("l");//9

var index2=mystr.lastIndexOf("l",4);//3

6咒林、返回指定位置的字符或其字符編碼值

var mystr="Hello World!";

var index=mystr.charAt(7);//o

同樣熬拒,它的一個兄弟函數(shù)就是查找對應(yīng)位置的字符編碼值,如:

var mystr="Hello World!";

var charCode=mystr. charCodeAt(7);//111

7垫竞、?字符串匹配

可以直接通過字符串進行匹配澎粟,也可以通過正則進行匹配,可能需要你對正則表達式有一定的了解欢瞪,先來看看match()函數(shù):

var mystr="hi,mynameisguoxiansheng6,33iswho?";

var matchStr=mystr.match("guo");? ? //guo

var matchStr1=mystr.match("Guo");? ? //null

var regexp1=/\d+/g;

var regexp2=/guo/g;

var regexp3=/guo/;

var matchStr2=mystr.match(regexp1);? ? //["6","33"]

var matchStr3=mystr.match(regexp2);? ? //["guo"]

var matchStr3=mystr.match(regexp3);? ? //["guo",index:11,input:"hi,mynameisguoxiansheng6,33iswho?"]

matchStr3.index? ? //11

matchStr3.input? ? //hi,mynameisguoxiansheng6,33iswho?

注意:1.此處使用字符串直接進行匹配活烙,被匹配的字符串內(nèi)包含要匹配的字符串時,返回所要匹配的字符串遣鼓。

   2.如果使用正則匹配字符串時啸盏,如果正則表達式?jīng)]有 g (全局標識)標志,返回與正則匹配相同的結(jié)果骑祟。而且返回的數(shù)組擁有一個額外的 input 屬性回懦,該屬性包含原始字符串。另外次企,還擁有一個 index 屬性怯晕,該屬性表示匹配結(jié)果在被字符串中的索引(以0開始)。如果正則表達式包含 g 標志抒巢,則該方法返回匹配字符串的數(shù)組贫贝。

再來看看使用exec()函數(shù):

var mystr="hi,mynameisguoxiansheng6,33iswho?";?

var regexp1=/guo/g;?

var matchStr=regexp1.exec(mystr); //["guo"]

var regexp2=/guo/;?

var matchStr1=regexp2.exec(mystr);? //["guo",index:11,input:"hi,mynameisguoxiansheng6,33iswho?"]

?matchStr1.index? ? ?//11

?matchStr1.input? //hi,mynameisguoxiansheng6,33iswho?

簡單吧,僅僅是把正則和字符串換了個位置蛉谜,即exec()函數(shù)是在正則上調(diào)用稚晚,傳遞字符串的參數(shù)。對于上面兩個方法型诚,匹配的結(jié)果都是返回第一個匹配成功的字符串客燕,如果匹配失敗則返回null。再來看一個類似的函數(shù)search():

var mystr ="hi,mynameisguoxiansheng6,33iswho?";

var regexp1 = /guo/;

var matchStr = mystr.search(regexp1);//11

進行正則匹配查找狰贯。如果查找成功也搓,返回字符串中匹配的索引值赏廓。否則返回 -1

8、字符串連接

可以將兩個或多個字符串進行加法操作傍妒,同時可以使用JavaScript提供的concat函數(shù):

先看加法操作進行字符串連接:

var mystr1="Hello";

var mystr2=" world,";

var mystr3="Hello";

var mystr4="guoxiansheng";

var newStr=mystr1.concat(mystr2+mystr3+""+mystr4);//Hello world,Hello guoxiansheng

concat()函數(shù)可以有多個參數(shù)幔摸,傳遞多個字符串,拼接多個字符串颤练。

9既忆、字符串切割和提取

有三種可以從字符串中抽取和切割的方法:

第一種,slice()函數(shù):

var mystr="hello world!";

var sliceStr1=mystr.slice(-3);//ld!

var sliceStr2=mystr.slice(-3,-1);//ld

var sliceStr3=mystr.slice(3);//lo world!

var sliceStr4=mystr.slice(3,7);//lo w

第二種:substring()函數(shù):

var mystr="hello world!";

var sliceStr1=mystr.substring(3);//lo world!

var sliceStr2=mystr.substring(3,7);//lo w

第三種:substr()函數(shù):

var mystr="hello world!";

var sliceStr1=mystr.substr(3);//lo world!

var sliceStr2=mystr.substr(3,7);//lo wo

注:1.slice() 可以為負數(shù)嗦玖,如果起始位置為負數(shù)患雇,則從字符串最后一位向前找對應(yīng)位數(shù)并且向后取結(jié)束位置,如果為正整數(shù)則從前往后取起始位置 到結(jié)束位置宇挫。

  2.substring()只能非負整數(shù)苛吱,截取起始結(jié)束位置同slice()函數(shù)一致。

  3.substr()與第一器瘪、第二種函數(shù)不同翠储,從起始位置開始截取,結(jié)束位置為第二個參數(shù)截取的字符串最大長度娱局。

? ? ? ? 以上三種函數(shù)未填第二參數(shù)時彰亥,自動截取起始位置到字符串末尾。

10衰齐、字符串大小寫轉(zhuǎn)換

var mystr="Hello World!";

var lowCaseStr=mystr.toLowerCase();//hello world!

var upCaseStr=mystr. toUpperCase();//HELLO WORLD!

11、字符串去空格

trim方法用來刪除字符串前后的空格?

var mystr=" hello world ";?

var trimStr=mystr.trim();//hello world

常用的字符串操作

1继阻、字符串去重

var str="aahhgggsssjjj";

function removeRepeat(msg){?

? ? var res=[];?

? ? var arr=msg.split("");?

? ? for(var i=0;i<arr.length;i++){?

? ? ? ? if(res.indexOf(arr[i])==-1){?

? ? ? ? ? ? res.push(arr[i]);?

? ? ? ? }?

? ? }?

? ? return res.join("");?

}?

removeRepeat(str);? ? //ahgsj

2耻涛、判斷字符串中字符出現(xiàn)的次數(shù)

/*

? ? 1.先實現(xiàn)字符串去重?

? ? 2.然后對去重后的數(shù)組用for循環(huán)操作,分別與原始數(shù)組中各個值進行比較瘟檩,如果相等則count++,循環(huán)結(jié)束將count保存在sum數(shù)組中抹缕,然后將count重置為0?

? ? 3.這樣一來去重后的數(shù)組中的元素在原數(shù)組中出現(xiàn)的次數(shù)與sum數(shù)組中的元素是一一對應(yīng)的?

*/?

var str="aacccbbeeeddd";?

var sum=[];?

var res=[];?

var count=0;?

var arr=str.split("");?

for(var i=0;i<arr.length;i++){?

? ? if(res.indexOf(arr[i])==-1){?

? ? ? ? res.push(arr[i]);?

? ? }?

}?

for(var i=0;i<res.length;i++){?

? ? for(var j=0;j<arr.length;j++){?

? ? ? ? if(arr[j]==res[i]){?

? ? ? ? ? ? count++;?

? ? ? ? }?

? ? }?

? ? sum.push(count);?

? ? count=0;?

}?

console.log(res);? ? //["a", "c", "b", "e", "d"]?

for(var i=0;i<res.length;i++){?

? ? var str=(sum[i]%2==0)?"偶數(shù)":"奇數(shù)";?

? ? console.log(res[i]+"出現(xiàn)了"+sum[i]+"次");?

? ? console.log(res[i]+"出現(xiàn)了"+str+"次");?

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市墨辛,隨后出現(xiàn)的幾起案子卓研,更是在濱河造成了極大的恐慌,老刑警劉巖睹簇,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奏赘,死亡現(xiàn)場離奇詭異,居然都是意外死亡太惠,警方通過查閱死者的電腦和手機磨淌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門值朋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灾馒,“玉大人,你說我怎么就攤上這事说敏。” “怎么了搪锣?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵秋忙,是天一觀的道長。 經(jīng)常有香客問我构舟,道長灰追,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任旁壮,我火速辦了婚禮监嗜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抡谐。我一直安慰自己裁奇,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布麦撵。 她就那樣靜靜地躺著刽肠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪免胃。 梳的紋絲不亂的頭發(fā)上音五,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音羔沙,去河邊找鬼躺涝。 笑死,一個胖子當著我的面吹牛扼雏,可吹牛的內(nèi)容都是我干的坚嗜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诗充,長吁一口氣:“原來是場噩夢啊……” “哼苍蔬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蝴蜓,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤碟绑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后茎匠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體格仲,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年汽抚,在試婚紗的時候發(fā)現(xiàn)自己被綠了抓狭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡造烁,死狀恐怖否过,靈堂內(nèi)的尸體忽然破棺而出午笛,到底是詐尸還是另有隱情,我是刑警寧澤苗桂,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布药磺,位于F島的核電站,受9級特大地震影響煤伟,放射性物質(zhì)發(fā)生泄漏癌佩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一便锨、第九天 我趴在偏房一處隱蔽的房頂上張望围辙。 院中可真熱鬧,春花似錦放案、人聲如沸姚建。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掸冤。三九已至,卻和暖如春友雳,著一層夾襖步出監(jiān)牢的瞬間稿湿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工押赊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饺藤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓流礁,卻偏偏與公主長得像策精,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子崇棠,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容