JavaScript字符串方法总结

substring()

xString.substring(start,end)  

substring()是最常用到的字符串截取方法,它可以接收两个参数(参数不能为负值),分别是要截取的开始位置和结束位置,它将返回一个新的字符串,其内容是从start处到end-1处的所有字符。若结束参数(end)省略,则表示从start位置一直截取到最后。

slice()

stringObject.slice(start, end)  

slice()方法与substring()方法非常类似,它传入的两个参数也分别对应着开始位置和结束位置。而区别在于,slice()中的参数可以为负值,如果参数是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符

substr()

stringObject.substr(start,length)  

substr()方法可在字符串中抽取从start下标开始的指定数目的字符。其返回值为一个字符串,包含从 stringObject的start(包括start所指的字符)处开始的length个字符。如果没有指定 length,那么返回的字符串包含从start到stringObject的结尾的字符。另外如果start为负数,则表示从字符串尾部开始算起。

split()

str.split([separator][, limit])  
  • separator 指定用来分割字符串的字符(串)。separator 可以是一个字符串或正则表达式。 如果忽略 separator,则返回整个字符串的数组形式。如果 separator 是一个空字符串,则 str 将会把原字符串中每个字符的数组形式返回。
  • limit 一个整数,限定返回的分割片段数量。split 方法仍然分割每一个匹配的 separator,但是返回的数组只会截取最多 limit 个元素。

replace()

str.replace(regexp|substr, newSubStr|function)  

符合正则的替换新字符

indexOf() & includes()

stringObject.indexOf(searchValue,fromIndex)  

indexOf()用来检索指定的字符串值在字符串中首次出现的位置。它可以接收两个参数,searchValue 表示要查找的子字符串,fromIndex 表示查找的开始位置,省略的话则从开始位置进行检索。

str.includes(searchString[, position])  

searchString 将要搜寻的子字符串。position 可选。从当前字符串的哪个索引位置开始搜寻子字符串;默认为0。需要注意的是,includes() 是区分大小写的。

lastIndexOf()

stringObject.lastIndexOf(searchValue,fromIndex)  

lastIndexOf()语法与indexOf()类似,它返回的是一个指定的子字符串值最后出现的位置,其检索顺序是从后向前。

stringObject.search(substr)  
stringObject.search(regexp)  

search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。它会返回第一个匹配的子字符串的起始位置,如果没有匹配的,则返回-1。

match()

stringObject.match(substr)  
stringObject.match(regexp)  

match()方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
如果参数中传入的是子字符串或是没有进行全局匹配的正则表达式,那么match()方法会从开始位置执行一次匹配,如果没有匹配到结果,则返回null。否则则会返回一个数组,该数组的第0个元素存放的是匹配文本,除此之外,返回的数组还含有两个对象属性index和input,分别表示匹配文本的起始字符索引和stringObject 的引用(即原字符串)。

如果参数传入的是具有全局匹配的正则表达式,那么match()从开始位置进行多次匹配,直到最后。如果没有匹配到结果,则返回null。否则则会返回一个数组,数组中存放所有符合要求的子字符串,并且没有index和input属性。

toLowerCase() & toUpperCase()

toLowerCase()方法可以把字符串中的大写字母转换为小写,toUpperCase()方法可以把字符串中的小写字母转换为大写。

字符串反转

String.prototype.reverse = function () {  
    return this.split('').reverse().join('')
}

去除空白行

String.prototype.removeBlankLines = function () {  
    return this.replace(/(\n[\s\t]*\r*\n)/g, '\n').replace(/^[\n\r\n\t]*|[\n\r\n\t]*$/g, '')
}

With ES6

startsWith() & endsWith()

startsWith()和endsWith()都有二个参数。第一个参数是需要寻找的字符串,第二个参数是开始寻找字符串的位置。如果第二个参数省略,startWith()从字符串开头寻找,endsWith()从结尾开始寻找

var msg = "Hello world!";  
console.log(msg.startsWith("Hello"));//true  
console.log(msg.endsWith("!"));//true  
console.log(msg.startsWith("o"));//false  
console.log(msg.endsWith("world!"));//true  
console.log(msg.startsWith("o", 4));//true  
console.log(msg.endsWith("o", 8));//true  

repeat()

repeat()函数接受一个数字参数用来重复字符串的次数,它返回一个新的字符串包含重复的字符串

console.log("x".repeat(3));// "xxx"  
console.log("hello".repeat(2));// "hellohello"  
console.log("abc".repeat(4)); // "abcabcabcabc"  

字符串模板

基本语法

像基础字符串一样,只不过把("")换成了(``)

let message = `Hello world!`;  
console.log(message);// "`Hello` world!"  
console.log(typeof message);// "string"  
console.log(message.length);// 14  

多行字符串

let message = `Multiline string`;

console.log(message);

console.log(message.length);

// "Multiline // string" // 16

多行字符串包含空格

let message = `Multiline  
                           string`;
console.log(message);// "Multiline  
                                                 string"
console.log(message.length);//31  

可以使用trim()去除空格

let html = ` <div> <h1>Title</h1> </div>`.trim();  

可以使用\n来换行

let message = `Multiline\nstring`;  
console.log(message);// "Multiline  
                                         // string"
变量在字符串中的使用
let name = "Xu Lei",  
        message = `Hello,${name}.`;
console.log(mesesage);//"Hello, Xu Lei"  

${}中是JavaScript表达式,可以是嵌入的计算式,函数或者更多。例如:

let count = 10,  
price = 0.25, message = `${count} items cost $${(count * price).toFixed(2)}.`;  
console.log(message);// "10 items cost $2.50."  

使用Raw Value

let message1 = `Multiline\nstring`,  
        message2 = String.raw`Multiline\nstring`;

console.log(message1);// "Multiline  
                      // string"
console.log(message2);// "Multiline\\nstring"