JS常用字符串方法總結(jié)

本文目錄
第一部分:常用字符串方法
1.查找字符串

  • indexOf(substr, [start])
  • lastIndexOf(substr, [start])
  • match(regexp)
  • search(regexp)
  • charAt(x)

2.類型轉(zhuǎn)換

  • split(delimiter, [limit])

3.替換字符串

  • replace(regexp/substr, replacetext)

4.大小寫轉(zhuǎn)換

  • toLowerCase()
  • toUpperCase()

5.拼接字符串

  • concat(v1,v2..)

6.提取字符串

  • slice(start, [end])
  • substr(start, [length])
  • substring(from, [to])

7.其他常用方法

  • fromCharcode(c1,c2)
  • includes()
  • endsWith()
  • trim()

第二部分:字符串基礎(chǔ)知識

  • 8.字符串的創(chuàng)建
  • 9.轉(zhuǎn)義符

1.查找字符串

1.1.indexOf(substr, [start])

indexOf方法搜索并(如果找到)返回字符串中搜索到的字符或子字符串的索引眉孩。如果沒有找到,則返回-1Start是一個可選參數(shù)洛史,指定字符串中開始搜索的位置番官,默認值為0慢显。

//indexOf(char/substring)
var sentence="Hi, my name is Sam!"
if (sentence.indexOf("Sam")!=-1)
alert("Sam is in there!")

1.2.lastIndexOf(substr, [start])

lastIndexOf() 方法返回指定文本在字符串中最后一次出現(xiàn)的索引, 如果未找到芍耘,則返回-1杰扫》锉冢“Start”是一個可選參數(shù)吩屹,指定字符串中開始搜索的位置, 默認值為string.length-1

//lastIndexOf(substr, [start])
var myString = 'javascript rox';
console.log(myString.lastIndexOf('r'));
//output: 11

1.3.match(regexp)

根據(jù)正則表達式在字符串中搜索匹配項客扎。匹配成功返回一個數(shù)組祟峦,其中存放了與它找到的匹配文本有關(guān)的信息。返回的數(shù)組的第0個元素存放的是匹配文本徙鱼。如果沒有找到匹配項宅楞,則返回一個信息數(shù)組或null

var intRegex = /[0-9 -()+]+$/;
var myNumber = '999';
var myInt = myNumber.match(intRegex);
console.log(myInt);
//output: Array(1)
 
var myString = '999 JS Coders';
var myInt = myString.match(intRegex);
console.log(myInt);
//output: null

1.4.search(regexp)

search() 方法用于檢索字符串中指定的子字符串袱吆,或檢索與正則表達式相匹配的子字符串厌衙,如果找到,返回與 regexp 相匹配的子串的起始位置绞绒,否則返回 -1婶希。
search()和indexOf()差不多,但是search() 方法無法設(shè)置第二個開始位置參數(shù)蓬衡。

//search(regexp)
var intRegex = /[0-9 -()+]+$/;
 
var myNumber = '999';
var isInt = myNumber.search(intRegex);
console.log(isInt);
//output: 0

1.5. charAt(x)

charAt(x)返回字符串中x位置的字符喻杈,下標從 0 開始。

//charAt(x)
var myString = 'jQuery FTW!!!';
console.log(myString.charAt(7));
//output: F

charAt() 告訴我們字符串也可以像數(shù)組一樣狰晚,通過下標屬性去訪問筒饰。
使用屬性訪問有點不太靠譜:

  • 不適用 Internet Explorer 7 或更早的版本
  • 它讓字符串看起來像是數(shù)組(其實并不是)
  • 如果找不到字符,[ ] 返回 undefined壁晒,而 charAt() 返回空字符串瓷们。
  • 它是只讀的。str[0] = "A" 不會產(chǎn)生錯誤(但也不會工作!)

所以谬晕,如果您希望按照數(shù)組的方式處理字符串碘裕,可以先把它轉(zhuǎn)換為數(shù)組。

2.類型轉(zhuǎn)換

2.1.split(delimiter, [limit])

split() 方法用于把一個字符串分割成字符串數(shù)組攒钳,返回一個字符串數(shù)組返回的數(shù)組中的字串不包括 delimiter自身∠ν妫可選的“limit”是一個整數(shù),允許各位指定要返回的最大數(shù)組的元素個數(shù)燎孟。

3.替換字符串

3.1.replace(regexp/substr, replacetext)

replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串揩页。

//replace(substr, replacetext)
var myString = '999 JavaScript Coders';
console.log(myString.replace(/JavaScript/i, "jQuery"));
//output: 999 jQuery Coders
 
//replace(regexp, replacetext)
var myString = '999 JavaScript Coders';
console.log(myString.replace(new RegExp( "999", "gi" ), "The"));
//output: The JavaScript Coders

4.大小寫轉(zhuǎn)換

4.1.toLowerCase()

toLowerCase() 方法用于把字符串轉(zhuǎn)換為小寫。

//toLowerCase()
var myString = 'JAVASCRIPT ROX';
myString = myString.toLowerCase();
console.log(myString)
//output: javascript rox

4.2.toUpperCase()

toUpperCase() 方法用于把字符串轉(zhuǎn)換為大寫萍程。

//toUpperCase()
var myString = 'javascript rox';
myString = myString.toUpperCase();
console.log(myString)
//output: JAVASCRIPT ROX

5.拼接字符串

5.1.concat(v1,v2..)

concat() 方法用于連接兩個或多個字符串,此方法不改變現(xiàn)有的字符串茫负,返回拼接后的新的字符串。

//concat(v1, v2,..)
var message="Sam"
var final=message.concat(" is a"," hopeless romantic.")
//alerts "Sam is a hopeless romantic."
alert(final)

6.提取字符串

6.1.slice(start, [end])

slice() 方法可提取字符串的某個部分忍法,返回一個新的字符串。包括字符串從 start 開始(包括 start)到 end 結(jié)束(不包括 end)為止的所有字符饿序。

//slice(start, end)
var text="excellent"
text.slice(0,4) //returns "exce"
text.slice(2,4) //returns "ce"

6.2.substr(start, [length])

substr() 方法可在字符串中抽取從 start 下標開始的指定數(shù)目的字符。返回一個新的字符串原探,包含從 start(包括 start 所指的字符) 處開始的 length 個字符。如果沒有指定 length咽弦,那么返回的字符串包含從 start 到該字符串的結(jié)尾的字符。

6.3.substring(from, [to])

substring() 方法用于提取字符串中介于兩個指定下標之間的字符离唬,方返回的子串包括 start 處的字符,但不包括 stop 處的字符,to 可選,如果省略該參數(shù)裸诽,那么返回的子串會一直到字符串的結(jié)尾。

//substring(from, [to])
var myString = 'javascript rox';
myString = myString.substring(0,10);
console.log(myString)
//output: javascript

slice,substr,substring三種方法總結(jié):

var intStr ="祖國的花朵就是八九點鐘的大太陽"
var sliceStr = intStr.slice(3,8)
var substrStr = intStr.substr(3,5)
var substringStr = intStr.substring(3,8)
console.log(sliceStr)
console.log(substrStr)
console.log(substringStr)

打印出來的三個變量都是一樣的花朵就是八

7.其他常用方法

7.1.fromCharcode(c1,c2)

fromCharcode(c1,c2)轉(zhuǎn)換一組Unicode值轉(zhuǎn)換為字符嘱函。

//fromCharCode(c1, c2,...)
console.log(String.fromCharCode(97,98,99,120,121,122))
//output: abcxyz
console.log(String.fromCharCode(72,69,76,76,79))
//output: HELLO

7.2. includes()

includes() 方法用于檢查字符串是否包含指定的字符串或字符,返回值是布爾類型埂蕊。

//includes()
var mystring = "Hello, welcome to edureka";
var n = mystring.includes("edureka");
//output: True

7.3. endsWith()

endsWith()函數(shù)檢查字符串是否以指定的字符串或字符結(jié)束往弓。

//endsWith()
var mystr = "List of javascript functions";
var n = mystr.endsWith("functions");
//output: True

7.4. trim()

trim() 方法會從一個字符串的兩端刪除空白字符。在這個上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行終止符字符(如 LF蓄氧,CR)

//trim()
var str = "     Hello Edureka!     ";
alert(str.trim());

第二部分

8.字符串的創(chuàng)建

通常函似,JavaScript 字符串是原始值,通過字面量方式創(chuàng)建:

var firstName = "Bill"

但是字符串也可通過關(guān)鍵詞 new 定義為對象:

var firstName = new String("Bill")

實例

var x = "Bill";
var y = new String("Bill");
  • typeof x 將返回 string
  • typeof y 將返回 object

注意:請不要把字符串創(chuàng)建為對象喉童。它會拖慢執(zhí)行速度撇寞。
new 關(guān)鍵字使代碼復雜化。也可能產(chǎn)生一些意想不到的結(jié)果:
當使用 == 相等運算符時堂氯,相等字符串是相等的:
實例

var x = "Bill";             
var y = new String("Bill");

(x == y) 為 true蔑担,因為 x 和 y 的值相等
當使用 === 運算符時,相等字符串是不相等的咽白,因為 === 運算符需要類型和值同時相等啤握。
實例

var x = "Bill";             
var y = new String("Bill");

(x === y) 為 false,因為 x 和 y 的類型不同(字符串與對象)
甚至更糟晶框。對象無法比較:
實例

var x = new String("Bill");             
var y = new String("Bill");

(x == y) 為 false排抬,因為 x 和 y 是不同的對象
注意:new出來的變量類型都是對象,如數(shù)值

var x = 123;
var y = new Number(123);

// typeof x 返回 number
// typeof y 返回 object

請盡量減少用new創(chuàng)建字符串三妈、數(shù)值等對象畜埋,這都會讓簡單的事情復雜化,并拖慢代碼運行速度畴蒲。
另外強調(diào)一點的是悠鞍,所有字符串方法都會返回新字符串。它們不會修改原始字符串模燥。
正式地說:字符串是不可變的:字符串不能更改咖祭,只能替換。

9.轉(zhuǎn)義符

字符串中的一些特殊字符有時候會被JS進行錯誤的解析蔫骂。
比如下面這種情況

var txt="We are the so-called "Vikings" from the north."
document.write(txt)

在 JavaScript 中么翰,字符串使用單引號或者雙引號來起始或者結(jié)束。這意味著上面的字符串將被截為:We are the so-called辽旋。實際解析中浩嫌,非但不會輸入任何內(nèi)容檐迟,還會報錯
index.html:12 Uncaught SyntaxError: Unexpected identifier
要解決這個問題,就必須把在 "Viking" 中的引號前面加上反斜杠 ()码耐。這樣就可以把每個雙引號轉(zhuǎn)換為字面上的字符串追迟。

var txt="We are the so-called \"Vikings\" from the north."
document.write(txt)

現(xiàn)在 JavaScript 就可以輸出正確的文本字符串了:We are the so-called "Vikings" from the north。
下面的表格列出了其余的特殊字符骚腥,這些特殊字符都可以使用反斜杠來添加到文本字符串中:

代碼 輸出
' 單引號
" 雙引號
\ 反斜杠
& 和號
\n 換行符
\r 回車符
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敦间,一起剝皮案震驚了整個濱河市束铭,隨后出現(xiàn)的幾起案子契沫,更是在濱河造成了極大的恐慌,老刑警劉巖浓利,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贷掖,死亡現(xiàn)場離奇詭異苹威,居然都是意外死亡牙甫,警方通過查閱死者的電腦和手機调违,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門技肩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旋奢,你說我怎么就攤上這事至朗【缃” “怎么了矗钟?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵真仲,是天一觀的道長。 經(jīng)常有香客問我虑凛,道長桑谍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任贞间,我火速辦了婚禮增热,結(jié)果婚禮上胧辽,老公的妹妹穿的比我還像新娘邑商。我一直安慰自己,他們只是感情好人断,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布涩金。 她就那樣靜靜地躺著鸭廷,像睡著了一般熔吗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上讼载,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音菇篡,去河邊找鬼一喘。 笑死凸克,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的咐容。 我是一名探鬼主播戳粒,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蔚约,長吁一口氣:“原來是場噩夢啊……” “哼孝鹊!你這毒婦竟也來了又活?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤团赏,失蹤者是張志新(化名)和其女友劉穎舔清,沒想到半個月后曲初,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡抒痒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年故响,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伪冰。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡贮聂,死狀恐怖寂汇,靈堂內(nèi)的尸體忽然破棺而出捣染,到底是詐尸還是另有隱情耍攘,我是刑警寧澤畔勤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布式曲,位于F島的核電站缸榛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钧排。R本人自食惡果不足惜恨溜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一糟袁、第九天 我趴在偏房一處隱蔽的房頂上張望项戴。 院中可真熱鬧颗品,春花似錦沃缘、人聲如沸槐臀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啥箭。三九已至,卻和暖如春砌滞,著一層夾襖步出監(jiān)牢的瞬間坏怪,已是汗流浹背铝宵。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工鹏秋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侣夷,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓叶撒,卻偏偏與公主長得像耐版,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粪牲,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

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