JavaScript中的String研究04_实例方法:repeat、replace、replaceAll、search、slice、split、startsWith、subString

JavaScript中的String研究04:实例方法——repeat、replace、replaceAll、search、slice、split、startsWith、substring

在JavaScript中,String对象提供了丰富的实例方法。本篇文章将深入探讨以下常用的String实例方法:

  • repeat()
  • replace()
  • replaceAll()
  • search()
  • slice()
  • split()
  • startsWith()
  • substring()

一、repeat()

1. 定义

repeat()方法构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的原字符串副本。

2. 语法

str.repeat(count)
  • count:一个介于0到正无穷大的数字,表示重复的次数。小数将被向下取整。如果count为负数或Infinity,将抛出RangeError

3. 用途

  • 重复字符串,生成指定次数的副本。
  • 常用于生成重复的字符序列,如填充、格式化输出等。

4. 示例

let str = "abc";

console.log(str.repeat(0));    // ""
console.log(str.repeat(1));    // "abc"
console.log(str.repeat(3));    // "abcabcabc"
console.log("=".repeat(5));    // "====="

5. 注意事项

  • 如果count为0,返回空字符串。
  • 如果count为NaN,视为0。
  • 如果count为负数或Infinity,将抛出RangeError

二、replace()

1. 定义

replace()方法返回一个新字符串,其中的某些模式(模式可以是子字符串或正则表达式)被替换为指定的替换值。

2. 语法

str.replace(searchValue, replaceValue)
  • searchValue:要替换的模式,可以是字符串或正则表达式。
  • replaceValue:用于替换的字符串或一个生成替换文本的函数。

3. 用途

  • 替换字符串中的指定内容。
  • 可以使用正则表达式进行复杂的替换操作。

4. 示例

(1)简单替换
let str = "Hello, World!";

let newStr = str.replace("World", "JavaScript");
console.log(newStr); // "Hello, JavaScript!"
(2)使用正则表达式
let str = "The rain in Spain stays mainly in the plain.";

let newStr = str.replace(/ain/g, "***");
console.log(newStr); // "The r*** in Sp*** stays m***ly in the pl***."
(3)使用替换函数
let str = "Item1: $10, Item2: $20";

let newStr = str.replace(/\$(\d+)/g, (match, p1) => {
  let price = parseInt(p1);
  return `$${price * 2}`;
});
console.log(newStr); // "Item1: $20, Item2: $40"

5. 注意事项

  • 如果searchValue是字符串,只替换首次出现的匹配项。
  • 如果需要替换所有匹配项,可以使用全局标志g的正则表达式,或使用replaceAll()方法。

三、replaceAll()

1. 定义

replaceAll()方法返回一个新字符串,所有匹配的子字符串或正则表达式都被指定的替换值替换。

2. 语法

str.replaceAll(searchValue, replaceValue)
  • searchValue:要替换的模式,可以是字符串或带有全局标志g的正则表达式。
  • replaceValue:用于替换的字符串或一个生成替换文本的函数。

3. 用途

  • 替换字符串中所有匹配的内容。
  • 简化全局替换的操作,不需要使用全局正则表达式。

4. 示例

let str = "foo bar foo baz foo";

let newStr = str.replaceAll("foo", "qux");
console.log(newStr); // "qux bar qux baz qux"

// 使用正则表达式
newStr = str.replaceAll(/foo/g, "qux");
console.log(newStr); // 同上

5. 注意事项

  • replaceAll()是ES2021(ES12)引入的方法,旧版本的浏览器或运行环境可能不支持。
  • 如果searchValue是正则表达式,必须带有全局标志g,否则会抛出TypeError

四、search()

1. 定义

search()方法执行正则表达式搜索,返回匹配项在字符串中的索引位置,如果未找到则返回-1

2. 语法

str.search(regexp)
  • regexp:一个正则表达式对象。如果传入的是非正则表达式,将使用new RegExp(obj)将其转换为正则表达式。

3. 用途

  • 查找匹配项的位置。
  • 判断字符串是否包含匹配的模式。

4. 示例

let str = "The quick brown fox jumps over the lazy dog";

let index = str.search(/fox/);
console.log(index); // 16

index = str.search(/cat/);
console.log(index); // -1

5. 注意事项

  • search()方法忽略正则表达式的全局标志g,总是从字符串开头进行搜索。
  • 如果需要查找所有匹配项的位置,可以使用正则表达式的exec()方法结合循环,或使用matchAll()方法。

五、slice()

1. 定义

slice()方法提取字符串的片段,并返回一个新的字符串,不修改原字符串。

2. 语法

str.slice(beginIndex[, endIndex])
  • beginIndex:起始索引(包含)。
  • endIndex:可选,结束索引(不包含)。如果省略,提取到字符串末尾。

3. 用途

  • 提取字符串的子字符串。
  • 支持负索引,从字符串末尾开始计算。

4. 示例

let str = "Hello, World!";

console.log(str.slice(7));         // "World!"
console.log(str.slice(0, 5));      // "Hello"
console.log(str.slice(-6));        // "World!"
console.log(str.slice(7, -1));     // "World"

5. 注意事项

  • 如果beginIndex大于endIndex,结果是空字符串。
  • 负索引表示从字符串末尾开始计算,例如-1表示最后一个字符。

六、split()

1. 定义

split()方法使用指定的分隔符字符串将一个字符串分割成子字符串数组。

2. 语法

str.split([separator[, limit]])
  • separator:可选,指定分隔字符串或正则表达式。
  • limit:可选,限制返回的子字符串数量。

3. 用途

  • 将字符串分割成数组,便于遍历或处理。
  • 可以使用正则表达式进行更复杂的分割。

4. 示例

let str = "apple,banana,cherry";

let fruits = str.split(",");
console.log(fruits); // ["apple", "banana", "cherry"]

// 使用限制
let limitedFruits = str.split(",", 2);
console.log(limitedFruits); // ["apple", "banana"]

// 使用正则表达式
let text = "Hello1World2JavaScript3ES6";
let words = text.split(/\d/);
console.log(words); // ["Hello", "World", "JavaScript", "ES6"]

5. 注意事项

  • 如果省略separator,返回包含整个字符串的数组。
  • 如果separator为空字符串"",将字符串拆分为单个字符的数组。

七、startsWith()

1. 定义

startsWith()方法用于判断当前字符串是否以指定的子字符串开头,根据判断结果返回truefalse

2. 语法

str.startsWith(searchString[, position])
  • searchString:要搜索的子字符串。
  • position:可选,开始搜索的位置,默认值为0

3. 用途

  • 检查字符串是否以某个子字符串开头。
  • 常用于输入验证、URL判断等。

4. 示例

let url = "https://www.example.com";

console.log(url.startsWith("https"));   // true
console.log(url.startsWith("http"));    // true
console.log(url.startsWith("www", 8));  // true

let str = "JavaScript";
console.log(str.startsWith("Script"));  // false
console.log(str.startsWith("Script", 4)); // true

5. 注意事项

  • 方法区分大小写。
  • position参数指定开始搜索的位置,默认为0

八、substring()

1. 定义

substring()方法返回一个字符串在开始索引到结束索引之间的子字符串(不包括结束索引处的字符)。

2. 语法

str.substring(indexStart[, indexEnd])
  • indexStart:起始索引(包含)。
  • indexEnd:可选,结束索引(不包含)。如果省略,提取到字符串末尾。

3. 用途

  • 提取字符串的子字符串。
  • slice()类似,但不支持负索引。

4. 示例

let str = "Mozilla";

console.log(str.substring(0, 3));    // "Moz"
console.log(str.substring(3));       // "illa"
console.log(str.substring(2, 5));    // "zil"

// 交换参数
console.log(str.substring(5, 2));    // "zil"(自动交换参数)

5. 注意事项

  • 如果indexStartindexEnd为负数,视为0
  • 如果indexStart大于indexEnd,方法会自动交换参数。
  • slice()的区别在于substring()不支持负索引。

九、总结

  • repeat():重复字符串,生成指定次数的副本。
  • replace():替换字符串中的指定内容,支持正则表达式和替换函数。
  • replaceAll():替换字符串中所有匹配的内容,简化全局替换操作。
  • search():查找匹配项的位置,返回匹配的索引。
  • slice():提取字符串的子字符串,支持负索引。
  • split():将字符串分割成数组,支持正则表达式。
  • startsWith():判断字符串是否以指定子字符串开头。
  • substring():提取字符串的子字符串,不支持负索引。

十、参考资料


在下一篇文章中,我们将继续探讨String对象的其他实例方法,如toLowerCasetoUpperCasetrimtrimStarttrimEnd等,敬请期待!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

It'sMyGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值