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拆分后校验前缀),熟练掌握其用法和避坑点,能大幅提升字符串处理效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1188517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何为知识密集型行业选服务商?2026年北京GEO优化公司推荐与评测,直击权威构建痛点 - 品牌推荐

随着生成式AI深度融入用户决策,GEO(生成式引擎优化)已成为企业在新流量生态中构建认知优势的关键。能否在AI对话中占据“答案优先权”,直接决定了品牌在智能时代的竞争力与信任度。面对市场上众多提供GEO服务的北京…

详细介绍:进阶数据结构Splay应用-维护数列

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Python 流程控制详解:条件语句 + 循环语句 + 人生重开模拟器实战

Python 流程控制详解 Python 中的流程控制是编程的基础&#xff0c;它允许程序根据条件或重复执行某些代码块。主要包括条件语句&#xff08;if、elif、else&#xff09;和循环语句&#xff08;for、while&#xff09;。下面我将一步步详解它们&#xff0c;并通过示例说明。最…

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

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

hive 小文件优化

想了解 Hive 小文件的优化方案,小文件会给 Hive 带来诸多负面影响(如占用过多 NameNode 内存、降低查询执行效率、增加任务调度开销等),优化需从事前预防、事后治理、配置优化三个核心维度入手,以下是全面且可落地…

Java核心语法:从变量到流程控制

Java 的核心语法是学习 Java 编程的起点&#xff0c;主要包括变量与数据类型、运算符、流程控制&#xff08;条件判断 循环&#xff09;等基础内容。下面从最基础的部分开始&#xff0c;系统地讲解这些核心语法&#xff0c;并配以清晰的示例和流程图参考。 1. 变量与数据类型…

springboot攻防靶场实验室平台的设计与实现

背景与意义 SpringBoot攻防靶场实验室平台的设计与实现&#xff0c;源于网络安全领域对实战化训练环境的迫切需求。随着网络攻击手段的多样化和复杂化&#xff0c;传统的理论教学已无法满足安全人才培养的需求&#xff0c;亟需一个高度仿真、可交互的实践平台。 技术背景 Spr…

如何轻松将 Python 英文版切换至中文界面

Python 的“英文版”切换到中文界面&#xff0c;主要取决于你指的到底是哪个部分&#xff1a; Python 解释器 / 命令行&#xff1a;本身没有界面语言概念&#xff08;一直是英文提示&#xff09;&#xff0c;但错误信息、帮助文档可以看中文版。IDLE&#xff08;Python 自带的…

元宇宙:数字文明的下一站

一、元宇宙的起源与演进&#xff1a;从科幻概念到科技浪潮元宇宙的概念最早可追溯至1992年——美国作家尼尔斯蒂芬森在科幻小说《雪崩》中首次提出“Metaverse”一词&#xff0c;描绘了一个与现实世界平行的虚拟空间&#xff0c;人们通过数字化身在其中生活、交互。这一设想随后…

物联网 (IoT) 助力您提升业务的 9 种方式

物联网&#xff08;IoT&#xff09;本质上是一个由互联设备构成的网络&#xff0c;这些设备能够跨网络收集并传输数据。 传感器、通信设备与身份识别芯片持续与云端及数据分析引擎交互&#xff0c;推动企业迈入自动化新时代。物联网能够为各规模企业提供实时反馈&#xff0c;助…

Delphi 与 VS 调试快捷键精准对应表

梳理Delphi和Visual Studio中调试相关快捷键的对应关系,这样在从Delphi切换到VS调试代码时,能快速匹配熟悉的操作习惯,不用反复记忆新的快捷键组合。下面我会按调试操作的核心场景分类,清晰列出两者的快捷键对应关…

硅基计划4.0 算法 递归回溯 - 实践

硅基计划4.0 算法 递归&回溯 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

如何为制造业选geo优化公司?2026年geo优化公司全面评测与推荐,直击精准询盘痛点 - 品牌推荐

基于《2026年中国企业AI搜索生态应用趋势报告》核心洞察、行业权威技术认证及第三方实测数据,甄选出2026年值得合作的GEO优化服务商榜单,覆盖高端制造、专业服务、知识内容、工业B2B等多种行业需求,逐一解答“哪家G…

钱包技术:从私钥保管到Web3入口的演进之路

在区块链世界中&#xff0c;钱包不仅仅是存储数字货币的地方&#xff0c;更是用户与整个去中心化网络交互的入口。它经历了从简单的密钥管理工具到多功能数字资产控制中心的演变&#xff0c;成为Web3生态的核心基础设施。一、钱包技术的发展历程早期单链时代&#xff08;2009-2…

EI会议推荐!2026年机器视觉、检测与三维成像技术国际学术会议(MVDIT 2026)

会议官网&#xff1a;https://www.yanfajia.com/action/p/QHT2TU33 会议日期&#xff1a; 2026年5月15-17日 会议地点&#xff1a;中国 南昌 接受或拒绝通知日期&#xff1a;提交后7个工作日 检索类型&#xff1a;EI Compendex、Scopus 会议秘书&#xff1a;Julian 联系电…

数据安全有保障的BI产品?观远数据筑牢企业核心资产防护墙 - 速递信息

在数据驱动的商业时代,数据安全已成为企业数字化转型的生命线。BI 产品作为整合、分析、呈现企业核心数据的关键工具,其数据安全保障能力直接决定企业数据资产是否面临泄露、篡改、丢失等风险。对于金融、央国企、零…

单北斗GNSS变形监测系统是什么?主要应用于水库和桥梁形变监测吗?

单北斗GNSS变形监测系统作为一种高效的监测工具&#xff0c;广泛应用于水库和桥梁等基础设施的形变监测。它利用北斗卫星信号&#xff0c;实时获取结构的微小变形数据&#xff0c;为工程安全提供可靠依据。在这些应用中&#xff0c;系统能够自动化记录和分析监测数据&#xff0…

操作系统进程间通信(IPC)的庖丁解牛

操作系统进程间通信&#xff08;IPC, Inter-Process Communication&#xff09;是 多进程系统中协调、同步与数据交换的核心机制。它解决了 进程隔离性 与 协作需求 之间的根本矛盾。理解 IPC&#xff0c;是掌握高并发、分布式系统、安全模型的基石。一、为什么需要 IPC&#x…

2026年GEO优化公司推荐:针对知识密集型行业痛点排名,涵盖法律与教育多场景应用 - 品牌推荐

由中国领先的行业监测与权威平台《广告主评论》主办、中经总网中经在线(全称中国经济报道)、世界品牌研究院(中国)集团有限公司协办支持的“全球 GEO 厂商评测”,从 GEO 理论奠基、技术实践、创始人背景、技术资质…

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

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