logo头像

求知若渴,虚心若愚

JavaScript - 字符串(String) - 字符串方法(三)

字符串拼接方法

concat()

  • 用于连接两个或多个字符串,注意数组也有concat()方法
  • 该方法不改变原字符串
  • concat() 方法将把它的所有参数转换成字符串,然后按顺序连接到字符串调用者的尾部,并返回连接后的字符串。
1
2
3
4
5
6
var arr = 'zs';
var arr1 = ['ww','zl'];
var arr2 = arr.concat(arr1);
console.log(arr) // zs
console.log(arr2) // zsww,zl
console.log(arr + arr1) // zsww,zl

TIP
在现代浏览器,尽量用 + ,更高效,大部分现代浏览器性能 + 高于concat

字符串截取方法

slice()

  • 可提取字符串的某个部分,并以新的字符串返回被提取的部分
  • str.slice(start,end)
  • 参数:
    • start
      • 要抽取的片断的起始下标。
      • 如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。
      • 也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
    • end
      • 紧接着要抽取的片段的结尾的下标。
      • 若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。
      • 如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
var str = "abcd"
console.log(str.slice()); // abcd 不加参数,就是原样返回
console.log(str.slice(0)); // abcd 参数end不指定,就是start到字符串结尾部分

console.log(str.slice(1,2)); // b 不包含结尾
console.log(str.slice(1,3)); // bc 不包含结尾

console.log(str.slice(3,-1)); // 空字符串 start大于等于end,返回空字符串

console.log(str.slice(-2,-1)); // c -2就是倒数第二个字符,-1倒数第一个字符(也就是,(2,3))
console.log(str.slice(2,3)); // c

console.log(str.slice(-1)); // d 未指定end,返回的是start到结尾的字符串

TIP

  • 若指定end参数,截取数据不包括end位置

  • 若第一个参数等于大于第二个参数,则返回空字符串.

  • 如果不指定参数,就返回一个一模一样的原字符串,相当于克隆一份
  • String.slice() 与 Array.slice() 相似,正好用来拷贝数据

substr()

  • 可在字符串中抽取从 start 下标开始的指定数目的字符。
  • str.substr(start,length)
  • 参数:
    • start:
      • 必需
      • 要抽取的子串的起始下标,必须是数值。
      • 如果是负数,那么该参数声明从字符串的尾部开始算起的位置。
      • 也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
    • length:
      • 可选。
      • 子串中的字符数。必须是数值。
      • 如果省略了该参数,那么返回从 str 的开始位置到结尾的字串。
      • 如果 length 为 0 或负数,将返回一个空字符串
  • 返回一个新的字符串
1
2
3
4
5
6
7
8
9
10
11
var str = "hello World";

var str1 = str.substr(2, 5);
console.log(str1); // llo W

var str2 = str.substr(2,0)
console.log(str2) // 空字符串

// 第一个参数是负数
var str3 = str.substr(-3,2)
console.log(str3) // rl

substring()

  • 提取字符串中介于两个指定下标之间的字符。
  • str.substring(start,stop)
  • 参数:

    • start:
      • 必需。
      • 非负整数,要提取的子串的第一个字符在 str 中的开始索引
    • stop:
      • 可选。
      • 非负整数,指明子字符串的结束位置,该索引从 0 开始起算
      • 如果省略,则返回到字符串结尾的子串
  • 返回的字符串是start到stop,长度为stop减去start,也就是substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串

  • 如果参数 startstop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)
1
2
3
4
5
6
7
8
9
10
11
12
var str = "abcdefghijk"

// 如果 start 或 end 为 NaN 或者负数,那么将其替换为0
console.log(str.substring(-2,2)) // ab
console.log(str.substring(-0,2)) // ab

// substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点
console.log(str.substring(3,1)) // bc
console.log(str.substring(1,3)) // bc

// start和stop相等,返回空字符串
console.log(str.substring(1,1)) // 空字符串

TIP

  • substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点。
  • 例如, str.substring(0, 3) 和 str.substring(3, 0) 将返回相同的子字符串。
  • 如果 start 或 end 为 NaN 或者负数,那么将其替换为0。

substr() vs substring()

  • 与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数
  • substr()含头含尾,substring()含头不含尾,slice()也是含头不含尾
支付宝打赏 微信打赏

赞赏是对我们的肯定!