javascript中如何使用substr()方法

发布时间:2021-10-15 10:43:16 作者:小新
来源:亿速云 阅读:134
# JavaScript中如何使用substr()方法

## 概述

`substr()`是JavaScript字符串操作中常用的方法之一,用于从字符串中提取指定位置的子字符串。虽然ES6之后推荐使用`substring()`和`slice()`方法,但理解`substr()`的用法对维护旧代码或特定场景仍有重要意义。

## 语法

```javascript
str.substr(start[, length])

参数详解

start参数

length参数

返回值

返回一个新的字符串,包含从原字符串提取的子串,不修改原字符串。

基础示例

示例1:基本用法

const str = "Hello, World!";
console.log(str.substr(7));      // "World!"
console.log(str.substr(7, 5));   // "World"

示例2:负数索引

const str = "JavaScript";
console.log(str.substr(-3));     // "ipt"(最后3个字符)
console.log(str.substr(-6, 4));  // "Scri"

示例3:边界情况

const str = "Example";
console.log(str.substr(10));      // ""(超出长度)
console.log(str.substr(-10, 2));  // "Ex"(负数超出视为0)
console.log(str.substr(2, 0));    // ""(长度为0)

与相似方法的对比

substr() vs substring()

特性 substr() substring()
参数意义 (start, length) (start, end)
负数处理 支持(从末尾计算) 负数视为0
参数互换 - 自动调整大小顺序

substr() vs slice()

特性 substr() slice()
参数意义 (start, length) (start, end)
负数处理 仅start支持 完全支持负数索引
浏览器兼容 非严格模式特性 ES标准方法

实际应用场景

场景1:文件扩展名提取

function getFileExtension(filename) {
  const dotIndex = filename.lastIndexOf('.');
  return dotIndex === -1 ? '' : filename.substr(dotIndex + 1);
}

场景2:手机号中间四位隐藏

function hidePhoneNumber(phone) {
  return phone.substr(0, 3) + '****' + phone.substr(7);
}

场景3:长文本截取预览

function getPreview(text, maxLength) {
  return text.length > maxLength 
    ? text.substr(0, maxLength) + '...' 
    : text;
}

注意事项

  1. 非标准方法substr()未被纳入ECMAScript规范,属于遗留功能
  2. 编码问题:对多字节字符(如中文)可能产生意外结果:
    
    "中文测试".substr(1, 2) // 可能返回乱码
    
  3. 性能考虑:在循环中频繁调用可能影响性能

替代方案建议

使用substring()

// 等效于str.substr(2, 4)
str.substring(2, 2 + 4)

使用slice()

// 等效于str.substr(-3)
str.slice(-3)

ES6字符串解构

const [first, ...rest] = str;
const firstThree = [...str].slice(0, 3).join('');

浏览器兼容性

总结

虽然substr()方法在JavaScript中仍然可用,但考虑到它是非标准方法且存在更现代的替代方案,建议: 1. 新项目优先使用slice()substring() 2. 维护旧代码时需理解其特性 3. 处理Unicode字符时考虑使用Array.from(str).slice()等方案

掌握substr()方法有助于更好地理解JavaScript字符串操作的演变过程,但在实际开发中应根据具体情况选择最合适的工具。 “`

注:本文实际约1000字,可通过以下方式扩展: 1. 增加更多边界案例 2. 添加性能测试对比数据 3. 详细说明Unicode处理方案 4. 补充历史背景知识

推荐阅读:
  1. javascript和HTML5利用canvas构建猜牌游戏
  2. JavaScript如何实现身份证验证

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

javascript

上一篇:怎么用php删除空目录

下一篇:javascript中var和let有哪些区别

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》