news 2026/4/16 17:20:27

JavaScript字符串核心方法实战解析:length、split、substring、startsWith

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaScript字符串核心方法实战解析:length、split、substring、startsWith

在前端开发中,字符串处理是高频场景,无论是表单验证、数据格式化还是文本筛选,都离不开核心方法的支撑。本文聚焦length属性、split()、substring()、startsWith()这四个常用成员,从语法、参数、实战场景到避坑要点逐一拆解,结合真实业务案例说明,助力大家高效掌握并落地到开发中。

一、length属性:获取字符串长度的基础

首先要明确,length是字符串的只读属性,并非方法,用于获取字符串的字符个数(本质是UTF-16编码单元数量),是前端表单长度校验的基础工具。

1. 语法与使用

直接通过字符串变量或字面量访问,无参数要求:

const str = "前端开发实战"; console.log(str.length); // 输出结果:6

2. 核心特性与返回值

返回非负整数,代表字符串的UTF-16编码单元数量,需注意:空字符串length为0,且该属性无法手动修改(赋值无效)。

3. 实战场景

  • 表单验证:用户名、密码的长度限制校验;

  • 字符串遍历:作为for循环的边界条件;

  • 空值判断:通过str.length === 0判断字符串是否为空。

4. 避坑要点

Unicode扩展字符(如emoji😀、部分生僻字)占2个UTF-16编码单元

length会返回2而非1。例如"😀你好".length结果为5,而非3。

5. 业务案例代码

// 密码长度校验(6-16位) const checkPassword = (pwd) => { if (pwd.length < 6 || pwd.length > 16) { return "密码长度需在6-16位之间"; } return "密码格式合法"; }; console.log(checkPassword("12345")); // 密码长度需在6-16位之间 console.log(checkPassword("abc123456")); // 密码格式合法 // 尝试修改length(无效操作) const testStr = "abc"; testStr.length = 10; console.log(testStr.length); // 仍输出3

二、split()方法:字符串转数组的实用工具

split()用于按指定分隔符拆分字符串,返回拆分后的字符串数组,不修改原字符串,是处理结构化文本(如CSV数据、URL参数)的核心方法。

1. 语法格式

str.split(separator, limit);

2. 参数详解

参数名

类型

可选性

说明

separator

字符串/正则

可选

拆分依据:空字符串拆分为单个字符;正则可匹配复杂分隔符(如多个空格);省略则返回含原字符串的单元素数组

limit

数字

可选

限制返回数组长度,非正数返回空数组,超出实际长度则返回完整数组

3. 返回值

新字符串数组,元素为拆分后的子字符串,原字符串保持不变。

4. 实战场景

  • 处理CSV格式数据,拆分逗号分隔的字段;

  • 按空格拆分句子,提取单个单词;

  • 拆分URL参数、文件路径等结构化文本。

5. 避坑要点

1. 分隔符在字符串首尾时,会生成空字符串元素(如"a,b,".split(",")返回["a","b",""]); 2. 正则作为分隔符时,需注意匹配规则,避免多余空元素(如用/\s+/匹配多个空格)。

6. 业务案例代码

// 1. 拆分CSV数据 const csvData = "张三,28,北京,前端工程师"; const userInfo = csvData.split(","); console.log(userInfo); // ["张三","28","北京","前端工程师"] // 2. 限制数组长度 const limitedArr = csvData.split(",", 3); console.log(limitedArr); // ["张三","28","北京"] // 3. 处理多个空格分隔的句子 const sentence = "JavaScript 基础 进阶 实战"; const words = sentence.split(/\s+/); // 正则匹配1个及以上空格 console.log(words); // ["JavaScript","基础","进阶","实战"] // 4. 拆分为单个字符 const charArr = "abcdef".split(""); console.log(charArr); // ["a","b","c","d","e","f"] // 5. 分隔符不存在的情况 const noSepStr = "hello world"; console.log(noSepStr.split("x")); // ["hello world"]

三、substring()方法:精准截取子字符串

substring()用于提取字符串中指定索引区间的子串,左闭右开区间(包含开始索引,不包含结束索引),不修改原字符串,适合固定位置截取场景。

1. 语法格式

str.substring(indexStart, indexEnd);

2. 参数详解

  • indexStart(必选):提取的开始索引,从0计数,非数字会转为0;

  • indexEnd(可选):提取的结束索引,省略则提取至字符串末尾;若小于indexStart,方法会自动交换两者位置;负数/非数字转为0。

3. 返回值

新字符串,内容为截取的子串,原字符串不变。

4. 实战场景

  • 截取手机号后4位、身份证号脱敏处理;

  • 截取固定长度的昵称、标题(超出部分省略);

  • 提取字符串中指定位置的内容。

5. 避坑要点

1. 不支持负数索引(负数会转为0),若需从末尾倒数截取,可使用slice()方法;

2. 索引超出字符串长度时,按字符串长度处理(如indexEnd大于str.length,等同于省略该参数)。

6. 业务案例代码

// 1. 基本截取(索引2至5,左闭右开) const originStr = "前端开发工程师"; const subStr1 = originStr.substring(2, 5); console.log(subStr1); // 开发工(索引2:开、3:发、4:工) // 2. 省略结束索引(截取至末尾) const subStr2 = originStr.substring(3); console.log(subStr2); // 发工程师 // 3. 开始索引大于结束索引(自动交换) const subStr3 = originStr.substring(5, 2); console.log(subStr3); // 开发工(等同于substring(2,5)) // 4. 手机号脱敏(隐藏中间4位) const formatPhone = (phone) => { if (phone.length !== 11) return "手机号格式错误"; return phone.substring(0, 3) + "****" + phone.substring(7); }; console.log(formatPhone("13812345678")); // 138****5678 console.log(formatPhone("1381234")); // 手机号格式错误 // 5. 处理负数参数 const subStr4 = originStr.substring(-2, 4); // 等同于substring(0,4) console.log(subStr4); // 前端开发

四、startsWith()方法:字符串前缀校验神器

startsWith()用于判断字符串是否以指定子串开头,返回布尔值,区分大小写,不修改原字符串,是格式验证、数据筛选的高效工具。

1. 语法格式

str.startsWith(searchString, position);

2. 参数详解

  • searchString(必选):要检测的前缀子串,非字符串会自动转为字符串;

  • position(可选):检测的起始位置,默认0;负数转为0;大于字符串长度则返回false。

3. 返回值

布尔值:true表示符合前缀规则,false表示不符合。

4. 实战场景

  • 校验URL协议(是否为HTTPS/HTTP);

  • 筛选指定前缀的文件名、用户名(如筛选"user_"开头的账号);

  • 验证手机号号段(如是否为138、139开头)。

5. 避坑要点

1. 严格区分大小写(如"Hello".startsWith("h")返回false);

2. 若searchString为空字符串,无论何种情况都返回true;

3. 位置参数position是“开始检测的位置”,而非“跳过前n个字符”,需注意边界。

6. 业务案例代码

// 1. 基础前缀校验 const url = "https://blog.csdn.net"; console.log(url.startsWith("https://")); // true console.log(url.startsWith("http://")); // false console.log(url.startsWith("blog", 8)); // true(从索引8开始检测) // 2. URL协议校验工具 const checkHttps = (url) => { if (url.startsWith("https://")) { return "安全HTTPS协议"; } else if (url.startsWith("http://")) { return "非安全HTTP协议"; } else { return "URL协议不合法"; } }; console.log(checkHttps("https://www.baidu.com")); // 安全HTTPS协议 console.log(checkHttps("ftp://xxx.com")); // URL协议不合法 // 3. 筛选指定前缀的用户名 const users = ["user_张三", "admin_李四", "user_王五", "test_赵六"]; const userList = users.filter(user => user.startsWith("user_")); console.log(userList); // ["user_张三","user_王五"] // 4. 处理大小写与空字符串 console.log("JavaScript".startsWith("java")); // false(大小写敏感) console.log("Hello".startsWith("")); // true(空字符串特殊规则)

五、总结与实战对比

以上四个字符串成员覆盖了“长度获取、拆分、截取、前缀校验”核心场景,整理对比如下,方便快速选型:

成员

核心功能

是否修改原字符串

关键注意点

length

获取长度

只读属性,不修改

扩展字符占2个长度单位

split()

字符串转数组

不修改

首尾分隔符生成空元素

substring()

截取子串

不修改

不支持负数索引,自动交换参数

startsWith()

前缀校验

不修改

区分大小写,空字符串返回true

实际开发中,这四个成员常组合使用(如先通过length判断长度,再用substring截取,或用split拆分后校验前缀),熟练掌握其用法和避坑点,能大幅提升字符串处理效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 8:55:00

餐饮小程序系统源码,高效运营与自由切换的双重升级

温馨提示&#xff1a;文末有资源获取方式随着餐饮行业数字化进程加快&#xff0c;一款高效、灵活的小程序系统已成为商家提升经营效率的重要工具。最新推出的外卖点餐小程序系统V10.8版本&#xff0c;通过全面技术升级与功能优化&#xff0c;为餐饮商家提供了更稳定、更智能的解…

作者头像 李华
网站建设 2026/4/16 8:53:58

以太网温湿度压力传感器选型指南:5个关键工程维度解析

在工业物联网&#xff08;IIoT&#xff09;环境监测系统中&#xff0c;以太网温湿度压力传感器因其网络原生、多参数融合与远程管理能力&#xff0c;正逐步替代传统模拟量或总线型设备。然而&#xff0c;市场产品良莠不齐&#xff0c;部分设备虽标称“三参合一”&#xff0c;却…

作者头像 李华
网站建设 2026/4/16 9:18:05

Prodigy AI标注工具v1.18更新详解

Changelog Prodigy 此页面列出了 Prodigy 的历史变更。每当有新的更新可用时&#xff0c;都会向购买时指定的邮箱地址发送邮件通知。然后您可以通过个人下载链接下载新版本。如果您的免费升级已过期&#xff0c;您现在可以通过我们的在线商店为您的许可证添加 12 个月的更新。…

作者头像 李华
网站建设 2026/4/15 14:57:18

springboot高等数学课程教辅资源系统的设计与实现

高等数学课程教辅资源系统的背景高等数学是理工科专业的基础课程&#xff0c;内容涵盖微积分、线性代数、概率统计等&#xff0c;理论性强且抽象。传统教学模式下&#xff0c;学生常面临知识点理解困难、习题资源分散、个性化学习支持不足等问题。SpringBoot作为轻量级Java框架…

作者头像 李华
网站建设 2026/4/16 10:24:33

springboot高校学习讲座预约管理系统设计实现

高校学习讲座预约管理系统的背景高校作为知识传播和学术交流的重要场所&#xff0c;频繁举办各类学术讲座、专家报告等活动。传统讲座管理多依赖人工登记、纸质签到或简单电子表格&#xff0c;存在信息滞后、资源分配不均、学生参与度低等问题。随着高校规模扩大和信息化需求提…

作者头像 李华