字符串基礎(chǔ)方法
1.chatAt()
str.chatAt(n)
返回字符串的第n個字符秕重,如果不在 0~str.length-1
之間眯搭,則返回一個空字符串。
const str = '12345';
str.chatAt(1); // 2
2.indexOf()
str.indexOf(substr[, start]);
返回 substr
在字符串 str
中首次出現(xiàn)的位置,從 start
位置開始查找软驰,如果不存在卵洗,則返回-1请唱。start
可以是任意整數(shù),默認(rèn)為0过蹂。如果 start
< 0則查找整個字符串(如同傳進(jìn)了0)十绑。如果 start > 字符串的長度
,則該方法返回-1酷勺,但如果查找的字符串是一個空字符串本橙,此時返回 str.length
。
var str = "haha";
str.indexOf('a'); // 1
str.indexOf('a', 6); // -1
str.indexOf('a', -1); // 1
str.indexOf('s', 1); // -1
str.indexOf(''); // 0
str.indexOf('', 6); // 4 字符串長度
3.lastIndexOf()
str.lastIndexOf(substr[,start]);
返回 substr
在字符串中最后出現(xiàn)的位置脆诉,如果沒有找到則返回-1甚亭。從該字符串的后面向前查找贷币,從start處開始。start
可以是任意整數(shù)(默認(rèn)是 str.length
)亏狰。如果為負(fù)值役纹,則被看作是0,如果 start > str.length
則被看作是 str.length
暇唾。
"canal".lastIndexOf("a") // 3
"canal".lastIndexOf("a",2) // 1
"canal".lastIndexOf("a",0) // -1
"canal".lastIndexOf("x") // -1
- substring()
方法返回一個字符串在開始索引到結(jié)束索引之間的一個子集, 或從開始索引直到字符串的末尾的一個子集字管。
str.substring(indexStart[, indexEnd])
substring
提取從 indexStart
到 indexEnd
(不包括)之間的字符。特別地:
- 如果
indexStart
等于indexEnd
信不,substring
返回一個空字符串嘲叔。 - 如果省略
indexEnd
,substring
提取字符一直到字符串末尾抽活。 - 如果任一參數(shù)小于 0 或為
NaN
硫戈,則被當(dāng)作 0。 - 如果任一參數(shù)大于
stringName.length
下硕,則被當(dāng)作stringName.length
丁逝。 - 如果
indexStart
大于indexEnd
,則substring
的執(zhí)行效果就像兩個參數(shù)調(diào)換了一樣梭姓。
var anyString = "Mozilla";
// 輸出 "Moz"
console.log(anyString.substring(0,3));
console.log(anyString.substring(3,0));
console.log(anyString.substring(3,-3));
console.log(anyString.substring(3,NaN));
console.log(anyString.substring(-2,3));
console.log(anyString.substring(NaN,3));
// 輸出 "lla"
console.log(anyString.substring(4,7));
console.log(anyString.substring(7,4));
5.slice()
提取一個字符串的一部分霜幼,并返回一新的字符串。
str.slice(beginSlice[, endSlice])誉尖;
beginSlice
從該索引(以 0 為基數(shù))處開始提取原字符串中的字符罪既。如果值為負(fù)數(shù),會被當(dāng)做 sourceLength + beginSlice
看待铡恕,這里的sourceLength
是字符串的長度 (例如琢感, 如果beginSlice
是 -3 則看作是: sourceLength - 3
)
endSlice
可選。在該索引(以 0 為基數(shù))處結(jié)束提取字符串探熔。如果省略該參數(shù)驹针,slice會一直提取到字符串末尾。如果該參數(shù)為負(fù)數(shù)诀艰,則被看作是sourceLength + endSlice
柬甥,這里的 sourceLength
就是字符串的長度(例如,如果 endSlice
是 -3其垄,則是, sourceLength - 3
)苛蒲。
var str1 = 'The morning is upon us.';
var str2 = str1.slice(4, -2); // morning is upon u
str.slice(-3); // returns 'us.'
str.slice(-3, -1); // returns 'us'
str.slice(0, -1); // returns 'The morning is upon us'
- substr()
substr() 方法返回一個字符串中從指定位置開始到指定字符數(shù)的字符。
str.substr(start[, length])
start
是一個字符的索引捉捅。首字符的索引為 0撤防,最后一個字符的索引為 字符串的長度減去1虽风。substr
從 start
位置開始提取字符棒口,提取 length
個字符(或直到字符串的末尾)寄月。
如果 start
為正值,且大于或等于字符串的長度无牵,則 substr
返回一個空字符串漾肮。
如果 start
為負(fù)值,則 substr
把它作為從字符串末尾開始的一個字符索引茎毁。如果 start
為負(fù)值且 abs(start)
大于字符串的長度克懊,則 substr
使用 0 作為開始提取的索引。注意負(fù)的 start
參數(shù)不被 Microsoft JScript 所支持七蜘。
如果 length
為 0 或負(fù)值谭溉,則 substr 返回一個空字符串。如果忽略 length橡卤,則 substr 提取字符扮念,直到字符串末尾。
var str = "abcdefghij";
console.log("(1,2): " + str.substr(1,2)); // (1,2): bc
console.log("(-3,2): " + str.substr(-3,2)); // (-3,2): hi
console.log("(-3): " + str.substr(-3)); // (-3): hij
console.log("(1): " + str.substr(1)); // (1): bcdefghij
console.log("(-20, 2): " + str.substr(-20,2)); // (-20, 2): ab
console.log("(20, 2): " + str.substr(20,2)); // (20, 2):
- replace()
replace()
方法返回一個由替換值替換一些或所有匹配的模式后的新字符串碧库。模式可以是一個字符串或者一個正則表達(dá)式, 替換值可以是一個字符串或者一個每次匹配都要調(diào)用的函數(shù)柜与。
str.replace(regexp|substr, newSubStr|function);
regexp
一個RegExp對象或者其字面量。改正則所匹配的內(nèi)容會被第二個參數(shù)的返回值替掉嵌灰。
substr
一個被 newSubStr
替換字符串弄匕。其被視為一整個字符串,而不是一個正則表達(dá)式沽瞭。
newSubStr
用于替換第一個參數(shù)在原字符串中的匹配部分的字符串迁匠。該字符串中可以內(nèi)插一些特殊的變量名。
function
一個用來創(chuàng)建新字符串的函數(shù)驹溃,該函數(shù)的返回值將替代掉第一個參數(shù)匹配的結(jié)果柒瓣。
返回值:返回一個部分或全部由替代模式所取代的新字符串。
// 使用正則表達(dá)式忽略大小寫
var str = 'Twas the night before Xmas...';
var newstr = str.replace(/xmas/i, 'Christmas');
console.log(newstr); // Twas the night before Christmas...
var re = /apples/gi;
var str = "Apples are round, and apples are juicy.";
var newstr = str.replace(re, "oranges");
// oranges are round, and oranges are juicy.
console.log(newstr);
- search()
search()
方法執(zhí)行正則表達(dá)式和 String對象之間的一個搜索匹配吠架。regexp
一個正則表達(dá)式對象芙贫。如果傳入一個非正則表達(dá)式對象,則會使用new RegExp(obj)隱式的將其轉(zhuǎn)換為正則表達(dá)式對象傍药。如果匹配成功磺平,則 search() 返回正則表達(dá)式在字符串中首次匹配項的索引。否則拐辽,返回 -1拣挪。
str.search(regexp);
當(dāng)你想要知道字符串中是否存在某個模式(pattern)時可使用 search
,類似于正則表達(dá)式的 test 方法俱诸。當(dāng)要了解更多匹配信息時菠劝,可使用 match(會更慢),該方法類似于正則表達(dá)式的 exec 方法睁搭。
- match()
str.match(regexp);
當(dāng)一個字符串與正則表達(dá)式匹配時赶诊,match方法檢索匹配項笼平。
參數(shù)regexp
是一個正則表達(dá)式對象。如果傳入一個非正則表達(dá)式對象舔痪,則會使用new RegExp(obj)隱式的將其轉(zhuǎn)換為正則表達(dá)式對象寓调。如果未提供參數(shù)直接使用match(),則會返回一個空字符串的數(shù)組:['']
锄码。
返回值是array數(shù)組夺英,如果字符串匹配到了表達(dá)式,會返回一個數(shù)組滋捶,數(shù)組的第一項是進(jìn)行匹配的完整的字符串痛悯,后面的項是用圓括號捕獲的結(jié)果。如果沒有匹配到則返回null重窟。
var url = 'http://www.baidu.com?a=1&b=2&c=3';
var reg = /([^?&=]+)=([^?&=])*/g;
var result = url.match(reg);
console.log(result); //["a=1", "b=2", "c=3"]
后續(xù)……