(总结)一些字符串操作的小技能

327 阅读7分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。

1.1.字符串转换

可以使用以下三种方法将任何类型的数据转换为字符串。

1.1.1.+

var num = 100
var numStr = "" + num //"100"
//或者
var numStr = num + "" //"100"

1.1.2.toString()

var num = 100
var numStr = num.toString() //"100"

1.1.3.String()

var num = 100
var numStr = String(num) //"100"

1.2.字符串拼接

1.2.1.+

var str1 = "hello"
var str2 = "world!"
var newStr = str1 + " " + str2 //hello world!

1.2.2.concat()

concat() 方法可以将多个字符串进行拼接。

用法:stringObject.concat(arg1,arg2,.....)

arg:可以有多个参数。

var str1 = "hello"
var str2 = "world!"
var str3 = "everyone!"
var newStr = str1.concat(' ', str2, str3) //hello world!everyone!

1.2.3.join()

join() 方法用于把数组中的所有元素转换一个字符串。

用法:arrayObject.join(separator)

separator:可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

var arr1 = ['cat','pig']
var str1 = arr1.join()
console.log(str1)//cat,pig

1.3.字符串分割

1.3.1.split()

split() 方法可以把一个字符串分割成字符串数组。

用法:stringObject.split(arg1,arg2)

arg1:必选,值可以是字符串或正则表达式,表示指定要切割的地方。(返回数组含用来指定切割的字符)

arg2:可选,返回数组的最大长度。

var str = "hello,world!"
var arr1 = str.split('') //['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd', '!']
var arr2 = str.split(',') //['hello', 'world!']
var arr3 = str.split('',5) //['h', 'e', 'l', 'l', 'o']

1.4.字符串提取

1.4.1.slice()

slice() 方法可以提取字符串的某个部位,并以新的字符串返回被提取的部分。

用法:stringObject.slice(start,end)

start:必选,指定开始位置的下标,从0开始。如果为负数,那么指从字符串的尾部开始算起的位置(-1 指最后一个字符,-2 指倒数第二个字符,以此类推)。

end:可选,指定结束位置的下标。如果不指定,则从开始位置提取到原字符串的结尾。如果为负数,那么指从字符串的尾部开始算起的位置(-1 指最后一个字符,-2 指倒数第二个字符,以此类推)。

slice() 方法返回的子字符串包括start处的字符,但不包括end处的字符。

var str = "hello,world!"
var newStr1 = str.slice(2) //llo,world!
var newStr2 = str.slice(2,5) //llo
var newStr3 = str.slice(-3) //ld!
var newStr4 = str.slice(-3,-1) //ld

1.4.2.substring()

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

用法:stringObject.substring(start,end)

start:必选,非负,指定开始的位置下标,从0开始。

end:可选,非负,指定结束的位置下标。

substring() 方法返回的子字符串包括start处的字符,但不包括end处的字符。

var str = "hello,world!"
var newStr1 = str.substring(2) //llo,world!
var newStr2 = str.substring(2,5) //llo

1.4.3.substr()

substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。

用法:stringObject.split(start,length)

start:必选,指定开始的位置下标,从0开始。如果为负数,那么指从字符串的尾部开始算起的位置(-1 指最后一个字符,-2 指倒数第二个字符,以此类推)。

length:可选,字符串中的字符数。必须是数值。如果不指定,那么返回开始位置到结尾的字符串。

var newStr1 = str.substr(2) //llo,world!
var newStr2 = str.substr(2,5) //llo,w

1.5.字符串替换

1.5.1.replace()

replace() 方法可以查找一个字符串中指定的字符并替换成想要的字符。

用法:stringObject.replace(arg1,arg2)

arg1:必选,值可以是字符串或正则表达式,表示需要查找的字符。

arg2:必选,表示需要替换的字符。

var str = "我是你爸爸!"
var newStr = str.replace('爸爸','爹') //我是你爹!

1.6.查找子字符串

1.6.1.indexOf()

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到匹配的字符串则返回 -1。

用法:stringObject.indexOf(searchvalue,start)

searchvalue:必须,规定需检索的字符串值。

start:可选,开始检索的位置,取值范围从0开始,一直到stringObject.length - 1。如果不指定,则将从字符串的首字符开始检索。

var str = "hello everyone, welcome to china!"
var index1 = str.indexOf("welcome") //16
var index2 = str.indexOf("welcome",3) //16

1.6.2.lastIndexOf()

lastIndexOf() 方法可返回某个指定的字符串值最后出现的位置,如果没有找到匹配字符串则返回 -1 。

用法:stringObject.lastIndexOf(searchvalue,start)

searchvalue:必须,规定需检索的字符串值。

start:可选,开始检索的位置,取值范围从0开始,一直到stringObject.length - 1。如果不指定,则将从字符串的最后一个字符开始检索。

注意: 该方法将从后向前检索字符串,但返回是从起始位置 (0) 开始计算子字符串最后出现的位置。

var str = "hello everyone, welcome to china! welcome to the world!"
var index1 = str.lastIndexOf("welcome") //34
var index2 = str.lastIndexOf("welcome",20) //16
var index3 = str.lastIndexOf("welcome",3) //-1

1.7.获取字符串的长度

1.7.1.length

var str = "hello,world!"
var num = str.length //12

1.8.删除字符串首尾的空格

1.8.1.trim()

注意:只能删除字符串首尾的空格,不能删除字符串中间的空格。

var str = " hello , world! "
var newStr = str.trim() //hello , world!

1.9.返回指定位置的字符或其字符编码值

1.9.1.charAt()

charAt() 方法可返回某个指定位置的字符。

用法:stringObject.charAt(index)

index:必须,表示字符串中某个位置的数字,即字符在字符串中的下标。

var str = "hello,world!"
var newStr = str.charAt(1) //e

1.9.2.charCodeAt()

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数 。

用法:stringObject.charCodeAt(index)

index:必须,表示字符串中某个位置的数字,即字符在字符串中的下标。

var str = "hello,world!"
var newStr = str.charCodeAt(1) //101

1.10.字符串匹配

1.10.1.match()

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配 。

用法:stringObject.match(regexp)

regexp:必须,规定要匹配的模式的 RegExp 对象。

var str="The rain in SPAIN stays mainly in the plain"; 
var arr1 = str.match(/ain/g) //['ain', 'ain', 'ain']
var arr2 = str.match(/ain/) //[0: "ain", groups: undefined, index: 5, input: "The rain in SPAIN stays mainly in the plain"]

1.10.2.search()

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

用法:stringObject.search(regexp)

regexp:必须,可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。

注意:search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

var str="The rain in SPAIN stays mainly in the plain"; 
var arr1 = str.search(/ain/) //5
var arr2 = str.search("ain") //5

1.10.3.exec()

exec() 方法用于检索字符串中的正则表达式的匹配,返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

用法:RegExpObject.exec(string)

string:必须,要检索的字符串。

var str="The rain in SPAIN stays mainly in the plain"; 
var arr1 = (/ain/g).exec(str) //[0: "ain", groups: undefined, index: 5, input: "The rain in SPAIN stays mainly in the plain"]
var arr2 = (/ain/).exec(str) //[0: "ain", groups: undefined, index: 5, input: "The rain in SPAIN stays mainly in the plain"]

1.11.字符串大小写转换

1.11.1.toLowerCase()

toLowerCase() 方法用于把字符串转换为小写。

var str = "Hello World!"
var newStr = str.toLowerCase() //hello world!

1.11.2.toUpperCase()

toUpperCase() 方法用于把字符串转换为大写。

var str = "Hello World!"
var newStr = str.toUpperCase() //HELLO WORLD!

1.12.字符串比较

1.12.1.localeCompare()

localeCompare() 方法用于用本地特定的顺序来比较两个字符串。如果字符串在字母表中应该排在字符串参数之前,则返回一个负数;如果字符串等于字符串参数,则返回0;如果字符串在字母表中应该排在字符串参数之后,则返回一个正数。

用法:stringObject.search(string)

var str = "green"
var num1 = str.localeCompare("black") //1
var num2 = str.localeCompare("green") //0
var num3 = str.localeCompare("yellow") //-1

1.13.Unicode 值转字符串

1.13.1.fromCharCode()

fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。

用法:String.fromCharCode(unicodeNum)

var str = String.fromCharCode(104,101,108,108,111) //hello