前言
在上一篇文章中我深入解析了 JS 的数据类型,但字符串,它非常有意思,所以我这篇单独为它开一栏,深入探索字符串的奥秘 🛺𝗱𝘂𝗱𝘂ᐝ
字符串是 JS 里最 “接地气” 的原始类型 —— 不管是用户输入的昵称、接口返回的文案,还是页面展示的标题,本质都是字符串在 “打工”!它像一串彩色珠子,是用于表示文本的数据类型,由一系列 Unicode 字符组成,可通过单引号(')、双引号(")或模板字面量(`)来定义。下面带大家解锁字符串的趣味操作,搭配代码 + 场景,一起来吧!
一、基础定义:3 种 “包裹” 方式
字符串的定义超灵活,不同场景选不同写法,就像给文本穿不同风格的衣服:
// 1. 单引号
const nickname = 'Henry';
// 2. 双引号:和单引号功能一致,适配嵌套场景
const slogan = "Hello, 字符串世界!";
const age = 18;
// 3. 模板字面量:多行+变量插值,高级玩家必备
const intro = `大家好~ 我是${nickname},今年${age}岁,超爱字符串操作!`;
console.log(intro);
输出:
✨ 小技巧:模板字面量里的 ${} 能直接插入变量 / 表达式,不用手动拼接,再也不怕漏写引号啦!
二、趣味操作:字符串的 “魔法玩法”
字符串是不可变的(不能直接修改某一位字符),但我们可以通过方法 “变身”,就像用积木拼出新造型~
1. 字符串反转:让文字 “倒着走”
把字符串拆成字符数组,反转后再拼接,轻松实现 “逆序魔法”!这就是我们所说的回文数了。
例如:
const str = 'juejin'
let arr = str.split('')
arr.reverse()
console.log(arr.join(''));
结果也是我们预期的反转:
👉 场景:验证码反转、趣味文本生成(“我爱你” 变成 “你爱我”)。
2. 回文判断:检测字符串 “对称美”
回文是正读、反读都一样的字符串例如:
上海自来水来自海上
用两种方法快速判断:
方法一:反转对比法(简单直观)
function isPalindrome(str){
let arr = str.split('').reverse().join('');
return arr == str;
}
方法二:双指针法(高效省内存)
function isPalindrome(str){
let left = 0;
let right = str.length - 1;
while(left < right){
if(str[left] != str[right]){
return false;
}
left++;
right--;
}
return true;
}
最后用2个例子输出:
console.log(isPalindrome('abba')); // 输出 true 🎉
console.log(isPalindrome2('abc')); // 输出 false ❌
👉 场景:判断用户输入的车牌、身份证号是否为回文(特殊业务场景)
3. 字符串拼接与插入:给文字 “加配料”
虽然字符串不可变,但可以用 +、concat() 或数组 splice 实现拼接 / 插入,像给奶茶加珍珠一样简单~
// 方式1:+ 号拼接(最常用)
const str1 = '奶茶';
const str2 = '加珍珠';
const drink = str1 + str2 + '加椰果';
console.log(drink); // 输出 "奶茶加珍珠加椰果"🥤
// 方式2:concat() 方法(多字符串拼接)
const fullStr = str1.concat(str2, '加芋圆');
console.log(fullStr); // 输出 "奶茶加珍珠加芋圆"
// 方式3:插入指定位置(数组辅助)
const sentence = '我喜欢编程';
const arr = sentence.split('');
arr.splice(3, 0, 'JavaScript');
const newSentence = arr.join('');
console.log(newSentence); // 输出"我喜欢JavaScript编程"💻
4. 实用工具方法:字符串的 “小助手”
| 方法 | 功能描述 | 代码示例 | 输出结果 |
|---|---|---|---|
length | 获取字符串长度(字符个数) | 'Hello'.length | 5 |
charAt(index) | 获取指定索引的字符(索引从 0 开始) | 'Hello'.charAt(1) | 'e' |
indexOf(substr) | 查找子字符串第一次出现的索引(找不到返回 - 1) | 'Hello World'.indexOf('World') | 6 |
slice(start, end) | 截取子字符串(左闭右开,不修改原字符串) | 'Hello World'.slice(0, 5) | 'Hello' |
toUpperCase() | 转为大写 | 'hello'.toUpperCase() | 'HELLO' |
trim() | 去除首尾空格(含换行符、制表符) | ' 我是字符串 '.trim() | '我是字符串' |
三、核心总结:字符串的 “灵魂要点”
- 本质属性:原始类型,不可变(不能直接修改某一位字符,但可通过方法生成新字符串);
- 定义灵活:单引号、双引号、模板字面量(
`)按需选择,模板字面量支持多行和变量插值,开发效率拉满; - 核心能力:反转、回文判断、拼接插入、截取检索等,靠
split()/join()/reverse()/slice()等方法实现; - 应用场景:文本展示、用户输入处理、接口数据解析、趣味功能开发(如回文检测、字符串加密),是前端开发中最常用的数据类型之一!
结语
字符串就像文本世界的 “百变玩家”,看似简单却藏着超多实用技巧,掌握这些操作,就能轻松应对各类文本处理需求~ 下次遇到字符串相关问题,记得想起这些 “魔法玩法” 哦! ✨
感谢阅读!