JS中的substr()和substring()函数有什么区别

简介: JS中的substr()和substring()函数有什么区别

在 JavaScript 中,substr()substring() 函数都是用于提取字符串的子串,但它们有一些区别:

  1. substr(start, length)substr() 函数从指定索引位置开始提取指定长度的字符。它接受两个参数:起始索引 start 和要提取的字符数 length。如果省略 length 参数,则会提取从起始索引到字符串末尾的所有字符。start 参数可以是负数,表示从字符串末尾开始计数。例如:

    const str = 'Hello, world!';
    const sub1 = str.substr(7, 5);     // "world"
    const sub2 = str.substr(-6);       // "world!"
    

    在上面的示例中,sub1 提取了从索引 7 开始的 5 个字符,而 sub2 提取了从倒数第 6 个字符开始到字符串末尾的所有字符。

  2. substring(start, end)substring() 函数从指定的两个索引位置之间提取子串,包括起始索引位置但不包括结束索引位置。它接受两个参数:起始索引 start 和结束索引 end。如果省略 end 参数,则会提取从起始索引到字符串末尾的所有字符。startend 参数都可以是负数,表示从字符串末尾开始计数。如果 start 大于 end,则 substring() 会交换这两个参数的值。例如:

    const str = 'Hello, world!';
    const sub1 = str.substring(7, 12);  // "world"
    const sub2 = str.substring(7);     // "world!"
    const sub3 = str.substring(-6);    // "Hello, world!"
    const sub4 = str.substring(12, 7);  // "world"(参数交换)
    

    在上面的示例中,sub1 提取了从索引 7 到索引 11 的字符,sub2 提取了从索引 7 开始的所有字符,sub3 提取了整个字符串(负数索引被视为 0),而 sub4 也提取了从索引 7 到索引 11 的字符,即使参数的顺序是颠倒的。

需要注意的是,substr()substring() 在处理负数索引和参数交换方面的行为略有不同。因此,在使用这些函数时应注意其差异,并根据具体需求选择适当的函数。

相关文章
|
1月前
|
JavaScript 前端开发 Java
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
本文介绍了JavaScript中常用的函数和方法,包括通用函数、Global对象函数以及数组相关函数。详细列出了每个函数的参数、返回值及使用说明,并提供了示例代码。文章强调了函数的学习应结合源码和实践,适合JavaScript初学者和进阶开发者参考。
41 2
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
|
20天前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
24 1
|
1月前
|
设计模式 JavaScript 前端开发
js中new和object.creat区别
【10月更文挑战第29天】`new` 关键字和 `Object.create()` 方法在创建对象的方式、原型链继承、属性初始化以及适用场景等方面都存在差异。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象。
|
1月前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
2月前
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
|
2月前
|
存储 JavaScript 前端开发
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。
|
2月前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
95 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
2月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
21 2
|
2月前
|
存储 JavaScript 前端开发
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
26 0
|
20天前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
20 1
JavaScript中的原型 保姆级文章一文搞懂