当前位置: 首页 > news >正文

JS中的String的常用方法

在 JavaScript 中,String 类型提供了大量实用方法,用于字符串的查找、截取、转换、替换等操作。以下是最常用的方法分类整理,附带示例说明:

一、获取字符串信息

1. length(属性,非方法)

获取字符串的长度(字符个数),注意:中文、符号等每个字符都算 1 个长度。

const str = "Hello 世界";
console.log(str.length); // 7("Hello"5个 + 空格1个 + "世界"2个)
2. charAt(index) / str[index]

获取指定索引位置的字符(索引从 0 开始),str[index] 是 ES6 新增的简化写法,兼容性更好。

const str = "abcde";
console.log(str.charAt(2)); // "c"
console.log(str[3]); // "d"
console.log(str.charAt(10)); // ""(索引超出范围时返回空字符串)
3. indexOf(searchValue, fromIndex)

从左到右查找 searchValue 在字符串中首次出现的索引fromIndex 可选(指定开始查找的位置);未找到返回 -1

const str = "abacab";
console.log(str.indexOf("a")); // 0(首次出现的索引)
console.log(str.indexOf("a", 1)); // 2(从索引1开始找,首次a在2)
console.log(str.indexOf("x")); // -1(未找到)
4. lastIndexOf(searchValue, fromIndex)

从右到左查找 searchValue 在字符串中最后出现的索引,未找到返回 -1

const str = "abacab";
console.log(str.lastIndexOf("a")); // 4(最后一个a的索引)
console.log(str.lastIndexOf("a", 3)); // 2(从索引3往左找,最后a在2)

二、字符串截取/分割

1. slice(start, end)

截取字符串中 [start, end) 区间的子串(左闭右开,end 可选,默认到字符串末尾);支持负索引(表示从末尾开始数,如 -1 是最后一个字符)。

const str = "Hello World";
console.log(str.slice(1, 4)); // "ell"(索引1到3,不包含4)
console.log(str.slice(6)); // "World"(从6到末尾)
console.log(str.slice(-5)); // "World"(从末尾第5个字符开始)
console.log(str.slice(4, 1)); // ""(start > end 时返回空字符串)
2. substring(start, end)

类似 slice,但不支持负索引;若 start > end,会自动交换两者位置。

const str = "Hello World";
console.log(str.substring(4, 1)); // "ell"(自动交换为1-4)
console.log(str.substring(-5)); // "Hello World"(负索引视为0)
3. split(separator, limit)

将字符串按 separator(分隔符,可为字符串或正则)分割成数组,limit 可选(限制返回数组的最大长度)。

const str = "a,b,c,d";
console.log(str.split(",")); // ["a", "b", "c", "d"](按逗号分割)
console.log(str.split(",", 2)); // ["a", "b"](限制最多2个元素)
console.log(str.split("")); // ["a", ",", "b", ",", "c", ",", "d"](空字符串分割为单个字符)

三、字符串转换

1. toUpperCase() / toLowerCase()

将字符串转为全大写 / 全小写,不改变原字符串(字符串是 immutable 不可变类型)。

const str = "Hello World";
console.log(str.toUpperCase()); // "HELLO WORLD"
console.log(str.toLowerCase()); // "hello world"
console.log(str); // "Hello World"(原字符串不变)
2. trim() / trimStart() / trimEnd()
  • trim():去除字符串首尾的空白字符(空格、换行 \n、制表符 \t 等);
  • trimStart()(原 trimLeft()):只去除开头空白;
  • trimEnd()(原 trimRight()):只去除结尾空白。
const str = "  Hello\nWorld  ";
console.log(str.trim()); // "Hello\nWorld"(保留中间换行,去除首尾空白)
console.log(str.trimStart()); // "Hello\nWorld  "(只去开头)
3. toString() / valueOf()

将其他类型(如 NumberBoolean)转为字符串,通常自动调用,无需手动写。

const num = 123;
console.log(num.toString()); // "123"

四、字符串替换

1. replace(searchValue, replacement)

替换字符串中第一个匹配searchValue(可为字符串或正则),返回新字符串(不改变原字符串);若要全局替换,需给正则加 g 修饰符。

const str = "abacab";
// 1. 替换第一个"a"为"x"
console.log(str.replace("a", "x")); // "xbacab"
// 2. 全局替换所有"a"为"x"(用正则 + g)
console.log(str.replace(/a/g, "x")); // "xbxcxb"
// 3. 替换并使用函数(动态生成替换内容)
console.log(str.replace(/a/g, (match, index) => `a${index}`)); // "a0bac0b"
2. replaceAll(searchValue, replacement)(ES2021+)

全局替换所有匹配的 searchValue(无需正则 g 修饰符,直接支持字符串),兼容性需注意(现代浏览器/Node.js 15+ 支持)。

const str = "abacab";
console.log(str.replaceAll("a", "x")); // "xbxcxb"(直接全局替换字符串)

五、判断与验证

1. includes(searchValue, fromIndex)

判断字符串是否包含 searchValue,返回布尔值;fromIndex 可选(指定开始查找的位置)。

const str = "Hello World";
console.log(str.includes("World")); // true
console.log(str.includes("world")); // false(区分大小写)
console.log(str.includes("Hello", 1)); // false(从索引1开始找,不包含Hello)
2. startsWith(searchValue, fromIndex)

判断字符串是否searchValue 开头,返回布尔值;fromIndex 可选(指定从哪个位置开始判断“开头”)。

const str = "Hello World";
console.log(str.startsWith("Hello")); // true
console.log(str.startsWith("World", 6)); // true(从索引6开始,以World开头)
3. endsWith(searchValue, length)

判断字符串是否searchValue 结尾,返回布尔值;length 可选(指定用字符串的前 length 个字符来判断)。

const str = "Hello World";
console.log(str.endsWith("World")); // true
console.log(str.endsWith("Hello", 5)); // true(用前5个字符"Hello"判断结尾)

六、其他常用方法

1. repeat(count)

将字符串重复 count 次,返回新字符串;count 需为非负整数,0 则返回空字符串。

const str = "ab";
console.log(str.repeat(3)); // "ababab"
console.log(str.repeat(0)); // ""
2. padStart(targetLength, padString) / padEnd(targetLength, padString)
  • padStart:在字符串开头补全 padString,直到总长度达到 targetLength
  • padEnd:在字符串结尾补全,用法类似。
    常用于格式化(如时间、编号补零)。
// 补零到长度为2
const num = "5";
console.log(num.padStart(2, "0")); // "05"
console.log(num.padEnd(2, "0")); // "50"// 补全到长度为5,用"ab"填充
const str = "12";
console.log(str.padStart(5, "ab")); // "ab12"(ab重复2次是abab,取前3个字符"aba"?不:5-2=3,ab补3个字符:ab的前3个是"aba"?结果是"aba12")

关键注意点

  1. 字符串不可变:所有 String 方法都不会修改原字符串,而是返回新字符串;
  2. 索引从0开始:所有涉及“位置”的方法(如 charAtslice)都遵循左到右的 0 基索引;
  3. 区分大小写includesindexOfreplace 等方法默认区分大小写,如需不区分,可先转全大写/小写再操作。

这些方法覆盖了日常开发中 90% 以上的字符串处理场景,熟练掌握后能高效解决字符串相关需求。


文章转载自:

http://i1jqZ6wl.mngyb.cn
http://hNHk4wsm.mngyb.cn
http://monGjErX.mngyb.cn
http://380hV0Yv.mngyb.cn
http://CRCwm6Bd.mngyb.cn
http://yJAve4gv.mngyb.cn
http://Li4gaW87.mngyb.cn
http://JtnC1F6H.mngyb.cn
http://hmpP0Ryb.mngyb.cn
http://5idVmJLG.mngyb.cn
http://8wFj0ri1.mngyb.cn
http://rxzb5CmX.mngyb.cn
http://FQJGyA2N.mngyb.cn
http://i3bCXgl5.mngyb.cn
http://j3tBoHDr.mngyb.cn
http://u0dmNjji.mngyb.cn
http://PK1ZoyJa.mngyb.cn
http://nFhMBtBA.mngyb.cn
http://a7EbToY6.mngyb.cn
http://59dwD7cg.mngyb.cn
http://5yVHM2o8.mngyb.cn
http://s9eLcDPc.mngyb.cn
http://w2hmcVJD.mngyb.cn
http://SlvbPFb2.mngyb.cn
http://GjMDA6CW.mngyb.cn
http://7sJ6JDqr.mngyb.cn
http://EUV1QgjV.mngyb.cn
http://0jr1CdlD.mngyb.cn
http://7r2ncJvb.mngyb.cn
http://uRuJxlGl.mngyb.cn
http://www.dtcms.com/a/368554.html

相关文章:

  • Linux调试命令速查:Java/微服务必备
  • 一文吃透 Protobuf Proto3 语法 + 风格规范 + 枚举行为全解(含检查清单与示例)
  • 第24节:3D音频与空间音效实现
  • AI Compass前沿速览:Kimi K2、InfinityHuman-AI数字人、3D-AI桌面伴侣、叠叠社–AI虚拟陪伴
  • 8051单片机-蜂鸣器
  • 来WAVE SUMMIT,文心快码升级亮点抢先看!
  • Redis 深度解析:数据结构、持久化与集群
  • MyBatis高频问题-自动映射与缓存解析
  • 力扣152:乘积最大子数组
  • honmony 中集成 tuanjie/unity
  • (二)文件管理-基础命令-rm命令的使用
  • 鸿蒙系统开发资料汇总:全面助力鸿蒙开发HarmonyOS
  • 手写React状态hook
  • scrypt 密钥派生算法(RFC7914)技术解析及源码示例
  • 案例分享|企微智能会话风控系统:为尚丰盈铝业筑牢沟通安全防线
  • Docker部署Drawnix开源白板工具
  • linux缺页中断频繁怎么定位
  • 代码随想录70期day3
  • AI驱动开发:颠覆传统编程新范式
  • 第三方web测评机构:【WEB安全测试中HTTP方法(GET/POST/PUT)的安全风险检测】
  • PAT 1096 Consecutive Factors
  • 53.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--集成短信发送功能
  • vsan高可用:确保可访问性、全部数据迁移,两种类型权衡
  • 神经网络|(十八)概率论基础知识-伽马函数·下
  • 力扣55:跳跃游戏
  • IDEA中Transaction翻译插件无法使用,重新配置Transaction插件方法
  • Daemon Tools Lite下载安装图文教程 | 2025官方中文版免费指南
  • 原子工程用AC6编译不过问题
  • 旧服务下线方案
  • AI驱动健康升级:新零售企业从“卖产品”到“卖健康”的转型路径