字符串的一些方法

1.charAt 返回指定索引出的字符

var str='abcd';

var a=str.charAt(0);

console.log(a); //'a'

console.log(str); //'abcd'

2.charCodeAt?返回指定索引出的unicode字符

 str.charCodeAt(0); ? //97

3.indexof ?判斷一個字符第一次出現(xiàn)在某個字符串的索引,如果包含返回它的索引,如果不包含返回-1.

str.indexOf('a'); ? ? //0

str.indexOf('e'); ? ? //-1

4.lastIndexOf?判斷一個字符最后一次出現(xiàn)在某個字符串的索引,如果包含返回它的索引,如果不包含返回-1.

str.lastIndexOf('b'); ? //1

str.lastIndexOf('e'); ? //-1

5.concat拼接2個字符串,返回一個新字符串,對原有字符串沒有任何改變。

var str='qwe';

var str1='abc';

var str2=str.concat(str1);

? ? console.log(str2);//"qweabc"

6.substr(n,m) 從索引n開始,截取m個字符,將截取的字符返回,對原字符串沒有任何改變。

var b=s.substr(1,1)

console.log(b); ?//'w'

7.substring(n,m) ? 從索引n開始,截取到索引m,不包括m.將截取的字符返回,對原字符串沒有任何改變.

var ee=str.substring(1,3);

console.log(ee); ?//"bc"

8.slice(n,m) ? 從索引n開始,截取到索引m,不包括m.將截取的字符返回,對原字符串沒有任何改變.

var aa=str.slice(0,3);

console.log(aa);//'abc'

9.split ?用指定字符分割字符串,返回一個數(shù)組.對原字符串沒有任何改變。

var a=str.split('');

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

10.replace('a',1);? 替換指定字符,返回替換后新的字符串,對原有字符串有改變。(第一個參數(shù)可以是正則表達(dá)式)?只能替換一次?,配合正則模式修飾符g使用

var str='aaaaee';

var reg=/a/g;

str.replace(reg,1); ? //"1111ee"

11.match()?可在字符串內(nèi)檢索指定的值,或找到一個或多個正則表達(dá)式的匹配。把找到的字符放在數(shù)組里,返回一個數(shù)組。

var str='aaaa3ed33';

var reg=/a/g;

str.match(reg); ?//["a", "a", "a", "a"]

12.search()?方法用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串。

es6新增加的方法

1.codePointAt() ?能夠正確處理4個字節(jié)儲存的字符,返回指定索引出一個字符的碼點。codePointAt方法是測試一個字符由兩個字節(jié)還是由四個字節(jié)組成的最簡單方法。

var s='??a';

s.codePointAt(0)?// 134071

s.codePointAt(1)// 57271


codePointAt方法返回的是碼點的十進(jìn)制值,如果想要十六進(jìn)制的值,可以使用toString方法轉(zhuǎn)換一下。

vars='??a';s.codePointAt(0).toString(16)// "20bb7"s.codePointAt(2).toString(16)// "61"不能識別32位的UTF-16字符

配合for...of循環(huán)使用,因為它會正確識別32位的UTF-16字符。

vars='??a';for(letchofs){console.log(ch.codePointAt(0).toString(16));}// 20bb7// 61


2.codePointAt用于從碼點返回對應(yīng)字符,但是這個方法不能識別32位的UTF-16字符(Unicode編號大于0xFFFF)。

String.fromCodePoint(0x20BB7)// "??"String.fromCodePoint(0x78,0x1f680,0x79)==='x\uD83D\uDE80y'// true

3.for..of ?字符串的遍歷器接口

for(letcodePointof'foo'){console.log(codePoint)}// "f"http:// "o"http:// "o"

4.at() ?返回指定索引處的字符

'abc'.at(0)// "a"'??'.at(0)// "??"


5.includes():返回布爾值,表示是否找到了參數(shù)字符串。這三個方法都支持第二個參數(shù),表示開始搜索的位置。


6.startsWith():返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。這三個方法都支持第二個參數(shù),表示開始搜索的位置。

7.endsWith():返回布爾值,表示參數(shù)字符串是否在源字符串的尾部。這三個方法都支持第二個參數(shù),表示開始搜索的位置。


vars='Hello world!';s.startsWith('world',6)// trues.endsWith('Hello',5)// trues.includes('Hello',6)// false


8.repeat() ?方法返回一個新字符串,表示將原字符串重復(fù)n次。

'x'.repeat(3)// "xxx"'hello'.repeat(2)// "hellohello"'na'.repeat(0)// ""



9.padStart(),padEnd()字符串補(bǔ)全長度的功能

? ?padStart()用于頭部補(bǔ)全

? ?padEnd()用于尾部補(bǔ)全

padStart和padEnd一共接受兩個參數(shù),第一個參數(shù)用來指定字符串的最小長度,第二個參數(shù)是用來補(bǔ)全的字符串。

'x'.padStart(5,'ab')// 'ababx''x'.padStart(4,'ab')// 'abax''x'.padEnd(5,'ab')// 'xabab''x'.padEnd(4,'ab')// 'xaba'

如果原字符串的長度,等于或大于指定的最小長度,則返回原字符串。

'xxx'.padStart(2,'ab')// 'xxx''xxx'.padEnd(2,'ab')// 'xxx'

如果用來補(bǔ)全的字符串與原字符串,兩者的長度之和超過了指定的最小長度,則會截去超出位數(shù)的補(bǔ)全字符串。

'abc'.padStart(10,'0123456789')

如果省略第二個參數(shù),默認(rèn)使用空格補(bǔ)全長度。

'x'.padStart(4)// '? x''x'.padEnd(4)// 'x? '

字符串實際應(yīng)用的一些操作

1.提取URL 中的各個GET 參數(shù)(參數(shù)名和參數(shù)個數(shù)不確定),將其按key-value 形式返回到一個json 結(jié)構(gòu)中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}

function serilizeUrl(url) {

var urlObject = {};

if (/\?/.test(url)) {

var urlString = url.substring(url.indexOf("?") + 1);

var urlArray = urlString.split("&");

for (var i = 0, len = urlArray.length; i < len; i++) {

var urlItem = urlArray[i];

var item = urlItem.split("=");

urlObject[item[0]] = item[1];

}

return urlObject;

}

return null;

}

2.已知有字符串foo=”get-element-by-id”,寫一個function 將其轉(zhuǎn)化成駝峰表示法”

function combo(msg){

var arr=msg.split("-");//[get,element,by,id]

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

arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length

-1);//Element

}

msg=arr.join("");//msg=” getElementById”

return msg;

}

3.找出字符串每個字符出現(xiàn)的個數(shù)

var str='aabbccddddd';

var objs=[];

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

var flag=true;

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

if(str.charAt(i)==objs[j].name){

objs[j].count++;

flag=false;

}

}

if(flag){

objs.push({name:str.charAt(i),

count:1})

}

}

4.清除字符串空格

????????1.使用正則表達(dá)式

// str = str.replace(/\s*/g,""); ? ?//去除所有空格? ?

//

// str = str.replace(/^\s*|\s*$/g,"");//去除兩頭空格:

//

// str = str.replace( /^\s*/, “”);? ? //去除左空格

//

// str = str.replace(/(\s*$)/g, "");? //去除右空格:

????????2.使用str.trim()方法

// var str = ' xiao ming ';

// var str2 = str.trim();? //只能去除兩端的空格,不能去除中間

5.字符串中奇偶字母分別是

var str = 'asdfsadfasd';

var arr = str.split('');

var arr1 =[];

var arr2 =[];

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

if(i%2==0){

arr1.push(arr[i]);

}else{

arr2.push(arr[i]);

}

}

console.log(arr1,arr2)

6.判斷一個字符中出現(xiàn)次數(shù)最多的字符,統(tǒng)計次數(shù)

var str='asjhkhdfsasasaaaasa';

var json={};

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

if(!json[str.charAt(i)]){

json[str.charAt(i)]=1;

}else{

json[str.charAt(i)]++;

}

}

console.log(json);

var iMax =0;

var iIndex = '';

for(var prop in json){

if(iMax<json[prop]){

iMax=json[prop];

iIndex=prop;

}

}

console.log('出現(xiàn)最多的是:'+iIndex+'出現(xiàn)'+iMax+'次');

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容