1. 程式人生 > 其它 >前端JS對字串處理

前端JS對字串處理

JS字串和陣列之間的轉換

1、字串轉換為陣列

varstring ='123,456,789'; varstringResult = string.split(','); console.log(stringResult)//輸出["123", "456", "789"] varstring2 ='abcdef' varstring2Result = string2.split('') console.log(string2Result)//輸出['a','b','c','d','e','f'] string2.split(",").map(Number);//輸出[123,456,789] JSON.parse(
"["+ string +"]");//輸出[123,456,789] 2、陣列轉換為字串 vararray = ['abc','def','hig'] vararrayResult = array.join(',') console.log(arrayResult)// 輸出"abc,def,hig" array.toString()//輸出"abc,def,hig"

js中擷取字串的三個方法 substring()、substr()、slice()

substring

1.substring()方法返回的子串包括start處的字元,但不包括stop處的字元。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substring(1,5)
< "1234"

2.如果引數startstop相等,那麼該方法返回的就是一個空串(即長度為 0 的字串)。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substring(1,1)
< ""

3.如果startstop大,那麼該方法在提取子串之前會先交換這兩個引數。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substring(5,1) //=>a.substring(1,5)
< "1234"

4.如果startstop有負數,那麼會把該引數自動轉為0

,然後繼續上述規則。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substring(5,-1) //=>a.substring(5,0) => a.substring(0,5)
< "1234"

5.如果startstop有正小數(負數直接進行第4條),那麼會把該引數向下取整,然後繼續上述規則。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substring(5,2.5) //=>a.substring(5,2) => a.substring(2,5)
< "234"

6.如果startstop有字串,那麼會先進行parseInt(),如果轉換結果為NaN,那麼就轉換為0,其餘情況繼續上述規則。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substring(5,'2.5') // =>a.substring(5,2) => a.substring(2,5)
< "234"
> a.substring(5,'ss') // =>a.substring(5,2) =>a.substring(5,0) => a.substring(2,5)
< "234"

其他情況就沒有一一測試了,當然正常情況下儘量不要這麼幹,畢竟語法上已經規定了是整數。

substr

substr() 方法可在字串中抽取從 start 下標開始的指定數目的字元。

語法

string.substr(start,length)

該方法與substring()最大的區別在於第二個引數是你需要擷取字串的長度,而不是位置。

1.substr()方法返回的子串從start處的字元開始(包括)往後擷取length長度,如果超過最末端就到最末端結束。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substr(1,5)
< "12345"
> a.substr(1,15) //只會到最末端,多了沒用
< "123456789"

2.start可以取負值,表示從字串尾部往頭部開始數(從右到左,注意是從1開始,比如-1指字串中最後一個字元),但是擷取長度還是從左到右,如果超過最末端就到最末端結束。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substr(-4,2) //-4表示從右開始數第4個,就是'6',然後取2個長度的字串,就是'67'
< "67"

3.如果length負值,那麼會直接當成0處理,最終返回""

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substr(4,-2) // => a.substr(4,0)
< ""

4.如果start或者length為小數,那麼會擷取小數部分。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substr(1.2,5.2) // => a.substr(1,5)
< "12345"

5.如果startlength有字串,那麼會先進行parseInt(),如果轉換結果為NaN,那麼就轉換為0,其餘情況繼續上述規則。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.substr('aa','5') // => a.substr(0,5)
< "01234"

slice

1.slice()方法返回的子串包括start處的字元,但不包括end處的字元。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.slice(1,5)
< "1234"

2.當start或者end為負值時,定位方式和substr一直,從右往左數,從1開始。

//chrome控制檯
> var a = '0123456789'
< undefined
> a.slice(1,-1)//起始點從第1(包括)開始,結束點為從右往左數第1個(不包括)
< "12345678"

2.startend的順序始終是從左到右,如果最終start的位置在end的右邊,那麼返回''

//chrome控制檯
> var a = '0123456789'
< undefined
> a.slice(2,1)//2所在的位置是'2',1所在的位置是'1',從2=>1,方向相反,返回為空
< ""
> a.slice(-2,1)//-2所在的位置是'8',1所在的位置是'1',從8=>1,方向相反,返回為空
< ""
> a.slice(-2,-1)//-2所在的位置是'8',-1所在的位置是'9',從8=>9,方向正常,返回為'8'
< "8"

3.其他情況和substring處理方式一致

//chrome控制檯
> var a = '0123456789'
< undefined
> a.slice('xx','5.5')// => a.slice(0,5)
< "01234"

小節

從上面測試得出結論,substring不支援負值,其他兩種方式均支援負數表示,並且是從右邊第一位開始計數。
substr的第二個引數是長度,這是和其他兩種方式最大的不同之處,slice的方向性比較強,永遠是從start=>end對應左=>右