String.prototype.replace()
**replace()
**方法返回一個(gè)由替換值替換一些或所有匹配的模式后的新字符串篷牌。模式可以是一個(gè)字符串或者一個(gè)正則表達(dá)式, 替換值可以是一個(gè)字符串或者一個(gè)每次匹配都要調(diào)用的函數(shù)。
//交換兩個(gè)單詞
console.log('hu dan'.replace(/(\w+)\s(\w+)/, '$2,$1'));
function addSymbol(match,p1,p2,p3){
return [p1, p2, p3].join('_');
}
let str = 'abc123#$%'.replace(/([^\d]*)(\d*)([^\w]*)/,addSymbol);
console.log(str);//abc_123_#$%
String.prototype.slice()
slice() 方法提取一個(gè)字符串的一部分,并返回一新的字符串歼争。
語(yǔ)法
str.slice(beginSlice[, endSlice])
var str1 = 'The morning is upon us.';
var str2 = str1.slice(4, -2);
console.log(str2); // OUTPUT: morning is upon u
String.prototype.substr()
substr() 方法返回一個(gè)字符串中從指定位置開(kāi)始到指定字符數(shù)的字符
語(yǔ)法
str.substr(start[, length])
如果 length 為 0 或負(fù)值,則 substr 返回一個(gè)空字符串局装。如果忽略 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):
String.prototype.substring()
substring() 方法返回一個(gè)字符串在開(kāi)始索引到結(jié)束索引之間的一個(gè)子集, 或從開(kāi)始索引直到字符串的末尾的一個(gè)子集驹暑。
語(yǔ)法
str.substring(indexStart[, indexEnd])
如果 indexStart 大于 indexEnd,則 substring 的執(zhí)行效果就像兩個(gè)參數(shù)調(diào)換了一樣辨赐。例如优俘,str.substring(1, 0) == str.substring(0, 1)
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));
// 輸出 ""
console.log(anyString.substring(4,4));
// 輸出 "Mozill"
console.log(anyString.substring(0,6));
// 輸出 "Mozilla"
console.log(anyString.substring(0,7));
console.log(anyString.substring(0,10));
slice 和substring,substr區(qū)別
slice和substring接收的是起始位置和結(jié)束位置(不包括結(jié)束位置)掀序,而substr接收的則是起始位置和所要返回的字符串長(zhǎng)度帆焕。
substring是以兩個(gè)參數(shù)中較小一個(gè)作為起始位置,較大的參數(shù)作為結(jié)束位置不恭。
當(dāng)參數(shù)中有負(fù)數(shù)時(shí)
- slice將字符串長(zhǎng)度與負(fù)數(shù)相加作為參數(shù)叶雹;
- substr僅僅是將第一個(gè)參數(shù)與字符串長(zhǎng)度相加后的結(jié)果作為第一個(gè)參數(shù);
- substring將負(fù)數(shù)直接當(dāng)做0.