JS 中字符串的常用的方法
总结JS中的常用字符串方法
截取字符串的三种方式
1、slice()
通过指定字符串的开始位置和结束位置,截取,返回新的字符串;
slice(start, end)
start: 必须的,如果是正数是指从头开始(从左向右),如果是负数是指从末尾开始(从右向左)
end: 可选的,表示结束的位置(但是不包括这个位置),如果没有,就是一直截取到字符串的末尾。
let str = 'james';
let a = str.slice(2,3); //不包括下标为3,返回新值
console.log(a) // m
let b = str.slice(2) //一直到末尾的
console.log(b) //mes
//如果只传递一个负数作为参数时,就是从字符串的末尾开始截取,截取到相应的下标值(从右向左)
let c = str.slice(-3)
console.log(c) //mes
String.slice()和Array.slice()的区别:
返回的类型不同,一个是字符串,一个是数组
2、substring()
substring 方法用于提取字符串中介于两个指定下标之间的字符;
substring(start, end)
start: 必须的,截取字符的最开始的下标值
end: 可选的,结束下标(但是不包括)
注意事项:
- 不包括end的下标值
- 如果没有end,就是到末尾值
- 如果 end 大于 start,start和end交换
- 如果其中是一个负值,那么就会自动转化为0,在与另外一个值进行比较
let str = 'james';
//正常的情况
let a = str.substring(2,4)
console.log(a) //me
//如果没有设置end,就会延迟到字符串末尾
let b = str.substring(2)
console.log(b) //mes
//如果前面的数字,大于后面,就会交换
let c = str.substring(4, 2)
console.log(c) //me
//如果有负值,就会转化为0,再进行比较,是否交换
let d = str.substring(2, -3)
console.log(d) //ja
//只传递一个负数的参数,就是输出整个长度(只要是负数,会默认的转化为0,又因为没有传递第二个参数,直接截取到字符串的末尾)
let e = str.substring(-3)
console.log(e) //james
3、substr()
substr() 方法用于返回一个从指定位置开始的指定长度的子字符串。
substr(start,length)
start(必需):所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。
length(可选):在返回的子字符串中应包括的字符个数。
注意事项
- 如果 length 为 0 或负数,将返回一个空字符串。
- 如果没有指定 length,那么截取字符串的末尾。
- 如果 start ,那么它将被替换为 0。
let str = 'james';
//从下标为2的地方,开始截取长度为3的字符串
let a = str.substr(2,3)
console.log(a) //mes
//直接截取到字符串的末尾
let b = str.substr(2)
console.log(b) //mes
//如果有一个负数,会直接转化为0,然后进行截取(如果长度为0,返回空的字符串)
let d = str.substr(2, -3)
console.log(d) // 空
//只传递一个负数作为参数,那么这个值会先加上字符串的长度,得到的值,作为第一个参数进行以后的操作。
//(例如:这里传递了 -2 , ‘james’的长度为5, 那么相加的结果为3,所以会把3作为第一个参数)
let e = str.substr(-2)
console.log(e) //es
其他字符串的操作
charAt()
返回指定位置的字符。
charAt(n)
注意:如果n为小于0,或者大于等于字符串的长度,会返回空的字符串。
let str = 'james';
let a = str.charAt(2)
console.log(a) //m
concat()
类似于Array.concat(),用法也基本一样,(拼接字符串使用 “+”也可以)
str.concat(str1...)
可以连接多个
let str = 'james';
let a = str.concat('kobe')
console.log(a) //jameskobe
indexOf()
返回匹配字符的第一个下标,如果没有找到,返回-1
indexOf(searchString, position)
searchString: 必须的
position: 可选的,指定从position的位置开始查找(而不是从头开始)
let str = 'james kobe';
let a = str.indexOf('e')
console.log(a) //3
//从第4个位置开始查找'e'
let b = str.indexOf('e', 4)
console.log(b) //9
lastIndexOf()
跟indexOf()的用法一样,只不过是从末尾开始查找
replace()
对字符串查找,并且替换
replace(old, new)
old: 必须的,要被替换的内容
new:必须的,新的内容
返回值: 返回一个新的字符串
let str = 'jamesa';
let a = str.replace('a', 'A')
console.log(a) //jAmesa
//从这里可以看出,这里只替换了第一个满足条件,就结束了。
localeCompare()
用本地特定的顺序来比较两个字符串。
str.localeCompare(otherStr)
当str小于otherStr,则返回值小于0
当str等于otherStr,则返回值为0
当str大于otherStr,则返回值大于0
注意事项:
字符串大小比较,是采用字符串的Unicode编码进行对比
当两个字符串的第一个字符可以比较出大小,则输出其结果值,如果无法比较出大小的话,则继续开始第二个字符开始比较
localCompare对比采用操作系统的排序规则
对于汉字,采用其比较其拼音大小,输出localeCompare值
let str = '北京';
let aa = str.localeCompare('上海')
console.log(aa); //-1
split()
用于把一个字符串分割成字符串数组
let str = 'james'
let aa = str.split() //没有传递参数,完全把整个字符串转化为数组
console.log(aa) //['james']
//传递一个分割符,把字符串进行分割,保存在数组中
let str = 'ja*me*s';
let b = str.split('*')
console.log(b) //["ja", "me", "s"]
持续更新。。。(偷懒中)