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: 可选的,结束下标(但是不包括)

注意事项:

  1. 不包括end的下标值
  2. 如果没有end,就是到末尾值
  3. 如果 end 大于 start,start和end交换
  4. 如果其中是一个负值,那么就会自动转化为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

注意事项:

  1. 字符串大小比较,是采用字符串的Unicode编码进行对比

  2. 当两个字符串的第一个字符可以比较出大小,则输出其结果值,如果无法比较出大小的话,则继续开始第二个字符开始比较

  3. localCompare对比采用操作系统的排序规则

  4. 对于汉字,采用其比较其拼音大小,输出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"]

持续更新。。。(偷懒中)

posted @ 2020-09-05 21:27  coder_xyf  阅读(526)  评论(0编辑  收藏  举报