字符串的一些方法

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 ?判斷一個(gè)字符第一次出現(xiàn)在某個(gè)字符串的索引,如果包含返回它的索引,如果不包含返回-1.

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

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

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

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

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

5.concat拼接2個(gè)字符串荞雏,返回一個(gè)新字符串幼驶,對(duì)原有字符串沒(méi)有任何改變。

var str='qwe';

var str1='abc';

var str2=str.concat(str1);

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

6.substr(n,m) 從索引n開(kāi)始,截取m個(gè)字符帜讲,將截取的字符返回,對(duì)原字符串沒(méi)有任何改變椒拗。

var b=s.substr(1,1)

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

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

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

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

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

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

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

9.split ?用指定字符分割字符串蚀苛,返回一個(gè)數(shù)組.對(duì)原字符串沒(méi)有任何改變在验。

var a=str.split('');

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

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

var str='aaaaee';

var reg=/a/g;

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

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

var str='aaaa3ed33';

var reg=/a/g;

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

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

es6新增加的方法

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

var s='??a';

s.codePointAt(0)?// 134071

s.codePointAt(1)// 57271


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

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

配合for...of循環(huán)使用,因?yàn)樗鼤?huì)正確識(shí)別32位的UTF-16字符徘禁。

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


2.codePointAt用于從碼點(diǎn)返回對(duì)應(yīng)字符诅诱,但是這個(gè)方法不能識(shí)別32位的UTF-16字符(Unicode編號(hào)大于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ù)字符串娘荡。這三個(gè)方法都支持第二個(gè)參數(shù),表示開(kāi)始搜索的位置驶沼。


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

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


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


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

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



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

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

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

padStart和padEnd一共接受兩個(gè)參數(shù)驹碍,第一個(gè)參數(shù)用來(lái)指定字符串的最小長(zhǎng)度壁涎,第二個(gè)參數(shù)是用來(lái)補(bǔ)全的字符串。

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

如果原字符串的長(zhǎng)度志秃,等于或大于指定的最小長(zhǎng)度怔球,則返回原字符串。

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

如果用來(lái)補(bǔ)全的字符串與原字符串浮还,兩者的長(zhǎng)度之和超過(guò)了指定的最小長(zhǎng)度竟坛,則會(huì)截去超出位數(shù)的補(bǔ)全字符串。

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

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

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

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

1.提取URL 中的各個(gè)GET 參數(shù)(參數(shù)名和參數(shù)個(gè)數(shù)不確定)又官,將其按key-value 形式返回到一個(gè)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”,寫(xiě)一個(gè)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.找出字符串每個(gè)字符出現(xiàn)的個(gè)數(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.判斷一個(gè)字符中出現(xiàn)次數(shù)最多的字符漫试,統(tǒng)計(jì)次數(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)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末六敬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子驾荣,更是在濱河造成了極大的恐慌外构,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件播掷,死亡現(xiàn)場(chǎng)離奇詭異审编,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)歧匈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門垒酬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人件炉,你說(shuō)我怎么就攤上這事勘究。” “怎么了斟冕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵口糕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我磕蛇,道長(zhǎng)景描,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任秀撇,我火速辦了婚禮超棺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呵燕。我一直安慰自己棠绘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布虏等。 她就那樣靜靜地躺著弄唧,像睡著了一般适肠。 火紅的嫁衣襯著肌膚如雪霍衫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天侯养,我揣著相機(jī)與錄音敦跌,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛柠傍,可吹牛的內(nèi)容都是我干的麸俘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼惧笛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼从媚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起患整,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拜效,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后各谚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體紧憾,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年昌渤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赴穗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膀息,死狀恐怖般眉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情潜支,我是刑警寧澤煤篙,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站毁腿,受9級(jí)特大地震影響辑奈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜已烤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一鸠窗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胯究,春花似錦稍计、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至剥哑,卻和暖如春硅则,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背株婴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工怎虫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓大审,卻偏偏與公主長(zhǎng)得像蘸际,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子徒扶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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