字符串常用的方法
获取字符串的长度
1. length
- 作用:获取字符串的长度
- 参数:无
- 返回值:字符串的长度
- 是否改变字符串:不改变
使用方法:str.length
let str = `hello`
str.length //5
获取字符串指定位置的值
charAt
- 作用:返回指定位置的字符
- 参数:想获取的字符的索引值
- 返回值:指定位置的字符
使用方法:str.charAt(1)
const str = 'hello'
str.charAt(1)//h
str[1]//h
str.charAt(5)//''
str[5]//undefined
// 当使用index取值不再str的长度范围内时,str[index]会返回undefined,而charAt(index)会返回空字符串,str[index]不兼容ie6-ie8,iacaAt(index)可以兼容
charCodeAt
作用:返回指定索引位置字符的Unicode值,返回值是0-65535之间的整数,表示给定索引处的UTF-16代码单元,如果指定位置没有字符,将返回NaN
使用方法:str.charCodeAt(1)
let str = 'abcdefg'
str.charCodeAt(1)//b -- > 98
检索字符串是否包含某值
indexOf
- 作用:在字符串中查找是否包含某个字符,有则返回第一次匹配到的位置的索引,否则返回-1
- 参数:searchValue,formIndex
- 返回值:查询到的索引
使用方法:str.indexOf(searchValue,fromIndex) searchValue(必须):规定需要查找的字符串值 fromIndex:可选的整数参数,规定在字符串中开始查找的位置,它的合法值是0到str.length-1,如果省略,则从字符串的首字符开始查找
let str = 'abcdefg'
str.indexOf('a')//0
str.indexOf('z')//-1
str.indexOf('c', 1)//2
lastIndexOf
- 作用:在字符串中查找是否包含某个字符,有则返回最后一次匹配到的位置,否则返回-1
- 参数:要查询的子字符串
- 返回值:查询到的索引
使用方法:str.lastIndexOf
let str = 'abcabc'
str.lastIndexOf('a') //3
str.lastIndexOf('d') //-1
Includes
- 作用:判断字符串是否包含指定的子字符串
- 参数:要查询的子字符串
- 返回值:Boolean
使用方法:str. Includes (searchValue, start) Searchvalue:必需,要查找的字符串 Start: 可选,设置从哪个位置开始查找,默认为 0
let str = 'hello world'
str.includes('o') //true
str.inculdes('j') //false
str.includes('e', 2) //false
StartsWIth
- 作用:检查字符串是否以指定的子字符串开始,如果是以指定的字符串开头返回 true,否则返回 false
- 参数:子字符串
- 返回值:Boolean
使用方法:str. StartsWith (searchValue, start)
let str='hello world'
str.startsWith('hello')//true
str.startsWith('llll')//false
str.startsWith('wo',6)//true
EndsWith
- 作用:检查当前字符串是否以指定的子字符串结尾,如果传入的子字符串在搜索字符串的末尾则返回 true,否则返回 false
- 参数:searchValue, length
- 返回值:Boolean
使用方法:str. EndsWith (searchValue, length) Searchvalue:必需, 要搜索的字符串 Length: 设置字符串的长度,默认值为原始字符串长度 str. Length
let str = "hello world!"
console.log(str.endsWith("!"))//true
console.log(str.endsWith("llo"))//false
console.log(str.endsWith("llo", 5))//true
当第二个参数设置为 5 时,就会从字符串的前 5 个字符中进行检索,而不会查询所有的,就会返回 true
连接字符串
Concat
- 作用:连接两个或者多个字符串,不会改变原有的字符串。
- 参数:要连接的字符串
- 返回值:新字符串
使用方法:str. Concat (str,str, str...)
let str = 'abc'
str.concat('def') //'abcdef'
str.concat('def', 'ghi') //'abcdefghi'
字符串分割为数组
Split
- 作用:把一个字符串分割成字符串数组
- 参数:字符串或正则、长度
- 返回值:拼接的数组
使用方法:str. Split (separator, limit)
方法需要两个参数:
separator:必需,字符串或正则表达式,从该参数指定的地方分割 string limit:可选,该参数可指定返回的数组的最大长度,如果设置了该参数,返回的子串不会多于这个参数制定的数组,如果没有设置该参数,整个字符串都会被分割,不考虑长度
let str = 'abcdef'
str.split('c') //['ab','def']
str.split('', 4) //['a','b','c','d']
如果使用空字符串作为第一个参数,那么字符串中的每个字符之间都会被分割。
const list = 'abc,bcd;efg'
const arr = list.split(/[,;]/)
console.log(arr) //['abc','bcd','efg']
截取字符串
slice
- 作用:提取字符串的某个部分,并返回新字符串
- 参数:开始位置,结束为止
- 返回值:新的字符串返回被提取的部分
使用方法:string. slice (start, end)
该方法有两个参数:
- start:必须,要截取的字符串的起始下标,如果为负数,则从尾部开始截取
- end:可选,要截取的片段结尾的下标,如果没有此参数,则截取到字符串的结尾。如果是负数,则是从字符串的尾部开始算起的位置。
- 包含 start 开头,不包含 end 结尾
let str = 'abcdefg'
str.slice(1, 6) //‘bcdef’
包含开始位置,不包含结束位置。
substr
- 作用:在字符串中截取从开始下表开始的指定长度的字符
- 参数:开始位置,截取长度
- 返回值:截取的新字符串
使用方法:str. substr (start, length)
该方法有两个参数:
- start:必需,要截取的子字符串的起始下标,如果是负数,那么该参数从字符串的尾部开始算起的位置。
- length:可选,子字符串的字符数量,如果不传此参数,那么从开始位置截取此结尾的字符串
let str = 'abcdefg'
str.substr(1, 3) //'bcd'
str.substr(1, 6) //'bcdefg'
substring
- 作用:提取字符串中两个指定下标之间的字符
- 参数:开始位置,结束为止
- 返回值:返回的子字符串
使用方法:str. substring (from, to)
该方法有两个参数:
- from:必须,一个非负的整数,规定要提取的子字符串的第一个字符的位置
- to:可选,一个非负的整数,如果忽略该参数,那么返回的子串会一直到结尾
let str = 'abcdefg'
str.substring(1, 6) //'bcdef'
str.substring(1) //'bcdefg'
str.substring() //'abcdefg'
包含开始位置的字符串,不包含结束位置的字符串。
字符串大小写转换
toLowerCase
- 作用:把字符串转换为小写
- 参数:无
- 返回值:转换后的字符串
使用方法:str. toLowerCase ()
let str = `ABcDEFg`
str.toLowerCase() //'abcdefg'
toUpperCase
- 作用:将字符串转换为大写
- 参数:无
- 返回值:转换后的字符串
使用方法:str. toUpperCase ()
let str = 'abc'
str.toUpperCase() //'ABC'
用此方法可以把首字母转换为大写:
let str = 'word'
word = word[0].toUpperCase() + word.substr(1) //'Word'
字符串匹配
replace
- 作用:在字符串中用一些字符替换另一些字符,货转替换一个与正则表达式匹配的子字符串
- 参数:searchValue,newValue
- 返回值:匹配后的新字符串
使用方法:str. replace (startValue, newValue)
该方法有两个参数:
- searchValue:必须,规定了要替换的字符串或者是要替换的模式 RegExp 对象,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
- newValue:必须,一个字符串值,规定了替换文本或者是生成替换文本的换书。
let str = 'abcd'
str.replace('a', 'e') //'ebcd'
// 全局替换
let str = 'my a is a'
str.replace(/a/g, 'b') //'my b is b'
如果正则具有全局标识 g,那么 replace 方法将替换所有匹配的子字符串,否则,只替换第一个匹配的子字符串。
match
- 作用:在字符串中查找指定的值,找到一个或者多个正则的匹配值,该方法类似 indexOf 和 lastIndexof,但是返回的是指定的值,而不是字符串的位置。
- 参数:正则表达式
- 返回值:匹配到的值组成的数组
使用方法:. str. match (regexp)
该方法的参数是必须的,规定要匹配的模式的 RegExp 对象,如果参数不是正则对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。
该方法返回存放匹配结果的数组,收拾的内容依赖于正则是否有全局标识 g
let str = 'abc'
str.match('c') //['c',index:2,input:'abc',groups:undefined]
search
- 作用:检索于正则表达式匹配的子字符串
- 参数:正则
- 返回值:如果匹配成功,则返回正则表达式在字符串中首次匹配的索引,否则返回 -1
使用方法:str. search (regexp)
要执行忽略大小写的检索,需要追加标识 i,该方法不执行全局匹配,正则写了 g 也会被忽略,也就是只会返回第一次匹配成功的结果。
let str = 'abc'
str.search(/ab/) //0
移除字符串空白字符
trim
- 作用:移除字符串收尾的空白字符,不会改变原始字符串
- 参数:无
- 返回值:移除空白字符后的新字符串
使用方法:str. trim ()
let str = ' abc '
str.trim() //'abc'
trimStart
- 作用:从原始字符串的开头删除空白的字符串
- 参数:无
- 返回值:删除开头空白字符的新字符串,不会改变原始字符串
let str = ' abc'
str.trimStart() //'abc'
trimEnd
- 作用:从原始字符串的结尾删除空白的字符串
- 参数:无
- 返回值:删除结尾空白字符的新字符串,不会改变原始字符串
使用方法:str. trimEnd ()
let str = 'abc '
str.trimEnd()
获取字符串本身
valueOf
- 作用:返回字符串对象的原始值,通常是由 JS 自动调用的, 而不是显示使用的
- 参数:无
- 返回值:字符串
使用方法:str. valueOf ()
let str = 'abc'
str.valueOf() //'abc'
toString
- 作用:返回字符串的值
- 参数:无
- 返回值:字符串值的字符串
使用方法:. str. toString ()
let str = 'abc'
str.toString() //'abc'
重复字符串
repeat
- 作用:将一个字符串重复 n 次,并返回新的字符串
- 参数:数字
- 返回值:重复后的新字符串
str. repeat (n)
let str = 'a'
str.repeat(3) //'aaa'
str.repeat(2) //'aa'
str.repeat(0) //''
str, repeat(2.9) //'aa'
如果参数是负数或者 Infinity 会直接报错,如果参数是 0 到-1 之间的小数,则等同于 0,如果参数是 NaN,则等于 0,如果是字符串,则需要先转换为数字。
补齐字符串长度
padStart
- 作用:用另一个字符串填充当前字符串
- 参数:targetLength,targetLength
- 返回值:返回新的字符串
使用方法:str. padStrt (targetLength, targetLength)
第一个参数是一个数字,标识字符串补齐之后的长度,第二个参数是用来补全的字符串。
let str = 'a'
str.padStart(2, '1') //'1a'
如果原字符串的长度,大于等于指定的第一个参数的长度,则返回原字符串:
let str = 'a'
str.padStart(1, '11') //'a'
如果用来补全的字符串与原字符串,两者的长度之和超过了指定的长度,则会截去超出位数的补全字符串:
let str = 'a'
str.padStart(5, 'ab') //'ababa'
str.padStart(4, 'ab') // 'abaa'
如果省略第二个参数,默认使用空格补全长度:
let str='a'
a.padStart(4)' a'
padEnd
- 作用:用于字符串尾部补全
- 参数:targetLength,padString
- 返回值:补全后的新字符串
使用方法:str. padEnd (targetLength, padString)
let str = 'a'
a.padEnd(3, 'b') //'abb'
字符串转为数字
parseInt
- 作用:将字符串转换为数字
- 参数:string, radix 进制
- 返回值:从字符串中解析出一个整数
使用方法:str. parseInt (string, radix)
该方法有两个参数:
- string:必须,要被解析的字符串
- radix:可选,标识要解析的为数字的进制,该值介于 2-36 之间
- 如果输入的
string
以0x
0X
开头,那么 radix 默认值为 16,字符串的其他部分被当做十六进制去解析 - 如果输入的
string
以0
开头,radix 被假定为 8 进制或 10 进制,具体选择浏览器是哪一个实现,ECMA 建议使用 10 进制,但不是所有的浏览器支持。 - 如果输入的 string 以其他任何值开头,radix 是 10 进制
- 如果输入的
如果第一个字符不能被转换为数字,parseInt
会返回 NaN
当参数 radix 的值为 0,或者没有参数,parseInt 会根据 string 来判断数字的进制
parseInt('10') //10
parseInt('17', 8) //15
parseInt('010') //输出10或者8
parseInt('0x10') //16
如果参数小于 2 或者大于 36,则 parseInt 将返回 NaN
parseInt('50', 1) //NaN
parseInt('50', 40) //NaNa
只有字符串会返回从第一个开始的数组,直到遇到第一个某一子串中不是数字的字符截止
parseInt('11 1') //11
如果字符串的第一个字符不能被转换为数组,就会返回 NaN
parseInt('a1') //NaN
字符串开头和结尾的空格是可以存在的:
parseInt(' 1 ') //1
parseFloat
- 作用:解析一个字符串,返回一个浮点数
- 参数:string
- 返回值:解析字符串之后的浮点数,如果不能解析返回
NaN
使用方法:parseFloat (string)
该方法指定字符串中的首个字符是否是数组,如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。
如果在解析过程中遇到了正负号(+ 或 -)、数字 (0-9)、小数点,或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。
参数字符串首位的空白符会被忽略。
parseFloat('10.00') // 输出结果:10.00
parseFloat('10.01') // 输出结果:10.01
parseFloat('-10.01') // 输出结果:-10.01
parseFloat('40.5 years') // 输出结果:40.5