本文目錄
第一部分:常用字符串方法
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
方法搜索并(如果找到)返回字符串中搜索到的字符或子字符串的索引眉孩。如果沒有找到,則返回-1
。Start
是一個可選參數(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 | 回車符 |