js 字符串常用方法

// js中關(guān)于字符串的一些細(xì)節(jié)知識(shí)

// 在js中所用單引號(hào)或者雙引號(hào)包起來(lái)的都是字符串巷送,每一個(gè)字符串是由零到多個(gè)字符組成。

var str = 'hahahahaha';

// str.length -> 字符串長(zhǎng)度

str[0] //-> 'h'

str[str.length-1] //=> 'n'

str[100] //=>undefined

// 字符常中的每一個(gè)字符串都有一個(gè)自己對(duì)應(yīng)位置的索引,也有類(lèi)似于數(shù)組一樣的length代表自己的長(zhǎng)度

// 循環(huán)遍歷輸出每一項(xiàng)

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

????console.log(str[i])

}

// 關(guān)于字符串中常用的方法

字符串是基本數(shù)據(jù)類(lèi)型沈自,字符串的每一次操作都是值類(lèi)型直接進(jìn)行操作毡代,不像數(shù)組一樣是基于空間地址來(lái)操作的,所以不存在原有字符串是否改變這一說(shuō)间校,肯定是不變的矾克。

### "charAt/charCodeAt"

作用:charAt根據(jù)索引獲取指定位置的字符,charCodeAt不僅僅獲取字符憔足,他獲取的是字符對(duì)應(yīng)的Unicode編碼值(ASC LL碼值)

參數(shù): 索引

返回:字符或者對(duì)應(yīng)的編碼

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

str.charAt(100)? // => ''(空字符串)

str[100]? ? ? ? // => undefined

str.charCodeAt(0)// => 113

String.fromCharCode(122)? // 'z'

charCodeAt返回的字符串對(duì)應(yīng)的編碼

String.fromCharCode返回的是編碼對(duì)應(yīng)的字符

```

### indexOf/lastIndexOf

和數(shù)組的indexOf/lastIndexOf一樣

基于這兩個(gè)方法胁附,可以獲取字符串在字符串中第一次或者最后一個(gè)出現(xiàn)的位置的索引,有這個(gè)字符滓彰,返回大于等于0的索引控妻,不包含這個(gè)字符,返回的結(jié)果是-1揭绑」颍可以驗(yàn)證當(dāng)前字符串是否包含某個(gè)字符。

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

if(str.indexOf('@')>-1){

//=》條件成立他匪,說(shuō)明包含字符串@符號(hào)

}

```

### slice

作用:str.slice(n,m) 從索引n開(kāi)始找到索引m出(不包含m)菇存, 把找到的字符串當(dāng)作新字符串返回

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

str.slice(1,3)? //=>we

```

### substring (字符串截取)

和slice語(yǔ)法一模一樣邦蜜,唯一的區(qū)別在于依鸥,slice支持負(fù)數(shù)索引肋杖。而substring不支持負(fù)數(shù)索引

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

str.substring(1,3)? //=>we

```

### substr

也是字符串截取的方法蝶俱,用法是:str.substr(n,m) 從索引n開(kāi)始截取m個(gè)字符

```

var str = 'qwertyuiopasdfghjklzxcvbnm';

str.substr(1,5)? //=>werty

str.substr(-6,3) //=>xcv

```

### toUpperCase/toLowerCase

實(shí)現(xiàn)字母大小寫(xiě)轉(zhuǎn)換

toUpperCase =》 小寫(xiě)轉(zhuǎn)大寫(xiě)

toLowerCase =》 大寫(xiě)轉(zhuǎn)小寫(xiě)

```

var str = 'QwertyuiopAsdfghjklZxcvbnm';

str.toUpperCase() //"QWERTYUIOPASDFGHJKLZXCVBNM"

str.toLowerCase()? //"qwertyuiopasdfghjklzxcvbnm"

```

### "split"

和數(shù)組中的join相對(duì)應(yīng)青柄,數(shù)組中的join是把數(shù)組每一項(xiàng)按照指定的連續(xù)符變?yōu)樽址运保鴖plit是把字符串按照指定的分隔符宝恶,拆分成數(shù)組中的每一項(xiàng)

```

var ary = [12,23,34];

var str = ary.join("+")? // 12+23+34

str.split("+")? ? // ["12","23","34"];

```

### "replace"

作用:替換字符串中的原有字符

參數(shù):原有字符负乡,要替換的新字符

返回:替換后的字符

```

把skl替換成”哈哈“

var str = 'skl2018skl';

str = str.replace("skl","哈哈");? //在使用正則的情況下政己,每執(zhí)行一次啊replace只能替換一個(gè)

```

看str原型方法(String.prototype)

### 真實(shí)項(xiàng)目中的需求

```

1.時(shí)間字符串格式化

》有一個(gè)時(shí)間字符串 "2019-1-10 11:46:8",我們項(xiàng)基于這個(gè)字符串獲取到”04月04日 16日26分“

```

/*

1.基于SPLIT按照空格把字符串拆成兩部分(數(shù)組的兩項(xiàng))

2.左邊這一部分繼續(xù)以SPLIT按照杠來(lái)拆

3.右邊這一部分繼續(xù)以SPLIT按照冒號(hào)來(lái)拆

4.把需要的信息拼接在一起即可

*/

var str = '2019-1-10 11:46:8';

function addZero(val){

return val < 10? '0'+val: val

}

var ary = str.split(' '),

aryLeft = ary[0].split('-'), //=> ['2019','1','10']

aryRight = ary[1].split(':'); //=> [11,46,8]

var month = addZero(aryLeft[1]);

var day = addZero(aryLeft[1]);

var hours = addZero(aryRight[1]);

var minutes = addZero(aryRight[1]);

console.log(month+"月"+day+"日"+hours+"時(shí)"+minutes+"分")


逼格高一點(diǎn)得

~function (pro){

????pro.formatTime = function (template){

????????template = template || '{0}年{1}月{2}日 {3}時(shí){4}分{5}秒';

????????var ary = this.match(/\d+/g);

????????template = template.replace(/\{(\d+)\}/g,function(){

????????var n = arguments[1],

????????val = ary[n] || '0';

????????val < 10 ? val ='0'+val:null;

????????????return val

????????})

????}

}(String.prototype)


### URL地址問(wèn)好傳參解析

> 有一個(gè)url地址"http://www.baidu.con/?lx=1&anme=AA&sex=man";地址問(wèn)好后面的內(nèi)容是我們需要解析出來(lái)的參數(shù)信息

{

????lx:1,

????name: 'AA',

????sex: 'man'

}


/*

* 1.先找到問(wèn)號(hào)

* 2.首先我們需要驗(yàn)證是否存在#哈希值驶睦,存在我們從問(wèn)號(hào)開(kāi)始截取到#杯缺,不存在我們直接截取到字符串末尾

* 3.以&符進(jìn)行拆分(數(shù)組)

* 4.遍歷數(shù)組中的每一項(xiàng)蒸播,把每一下再按照=進(jìn)行拆分,把拆分后的第一項(xiàng)作為對(duì)象的屬性名萍肆。第二項(xiàng)作為屬性值進(jìn)行存儲(chǔ)

*/

var str = 'http://www.baidu.con/?lx=1&anme=AA&sex=man#teacher'

//=》#后面的稱(chēng)為哈希(HASH)值袍榆,這個(gè)值可能有可能沒(méi)有,有的話(huà)我們截取的時(shí)候需要過(guò)濾掉

function strXI(str){

????// 獲取

????var indexASK = str.indexOf("?");

????var indexWELL = str.indexOf('#');

????var indexStr = '';

????if(indexWELL>-1){

????????//=>存在#

????????indexStr = str.substring(indexASK+1,indexWELL)

????}else{

????????indexStr = str.substr(indexASK+1)

????}

????var ary = indexStr.split('&')

????var obj = {}

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

????????var item = ary[i];

????????var itemAry = item.split('=');

????????obj[itemAry[0]] = itemAry[1]

????}

????return obj

}

console.log(strXI(str))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末塘揣,一起剝皮案震驚了整個(gè)濱河市包雀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亲铡,老刑警劉巖才写,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葡兑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赞草,警方通過(guò)查閱死者的電腦和手機(jī)讹堤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厨疙,“玉大人洲守,你說(shuō)我怎么就攤上這事≌雌啵” “怎么了梗醇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)撒蟀。 經(jīng)常有香客問(wèn)我叙谨,道長(zhǎng),這世上最難降的妖魔是什么牙肝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任唉俗,我火速辦了婚禮嗤朴,結(jié)果婚禮上配椭,老公的妹妹穿的比我還像新娘。我一直安慰自己雹姊,他們只是感情好股缸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著吱雏,像睡著了一般敦姻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歧杏,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天镰惦,我揣著相機(jī)與錄音,去河邊找鬼犬绒。 笑死旺入,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凯力。 我是一名探鬼主播茵瘾,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咐鹤!你這毒婦竟也來(lái)了拗秘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤祈惶,失蹤者是張志新(化名)和其女友劉穎雕旨,沒(méi)想到半個(gè)月后扮匠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凡涩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年餐禁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片突照。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帮非,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出讹蘑,到底是詐尸還是另有隱情末盔,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布座慰,位于F島的核電站陨舱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏版仔。R本人自食惡果不足惜游盲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛮粮。 院中可真熱鬧益缎,春花似錦、人聲如沸然想。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)变泄。三九已至令哟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妨蛹,已是汗流浹背屏富。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛙卤,地道東北人狠半。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像表窘,于是被迫代替她去往敵國(guó)和親典予。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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