JavaScript字符串完全指南
专为编程新手打造的通俗易懂知识点汇总,涵盖创建、操作、常用方法和技巧
什么是字符串?
字符串就是文本数据,在JavaScript中用引号包裹起来表示。
字符串(String)是由零个或多个字符组成的序列,用于表示文本数据。
// 字符串示例
let greeting = “你好,世界!”;
let name = ‘张三’;
let message = `JavaScript字符串`;
let greeting = “你好,世界!”;
let name = ‘张三’;
let message = `JavaScript字符串`;
在JavaScript中,你可以使用单引号(‘)、双引号(“)或反引号(`)来创建字符串。
创建字符串的三种方式
创建字符串有三种常见的方法:
// 1. 使用双引号
let str1 = “Hello, World!”;
// 2. 使用单引号
let str2 = ‘欢迎学习JavaScript’;
// 3. 使用反引号(模板字符串)
let str3 = `可以换行
并且支持嵌入表达式`;
let str1 = “Hello, World!”;
// 2. 使用单引号
let str2 = ‘欢迎学习JavaScript’;
// 3. 使用反引号(模板字符串)
let str3 = `可以换行
并且支持嵌入表达式`;
字符串构造函数
你还可以使用String构造函数创建字符串对象:
let strObj = new String(“这是一个字符串对象”);
// 注意:这种方法不常用,通常使用字面量形式即可
// 注意:这种方法不常用,通常使用字面量形式即可
转义字符
当我们需要在字符串中使用特殊字符时,需要使用转义字符(\):
转义序列 | 含义 |
---|---|
\’ | 单引号 |
\” | 双引号 |
\\ | 反斜杠 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
let quote = “他说:\”JavaScript很有趣!\””;
let path = “C:\\Windows\\System32”;
let multiLine = “第一行\n第二行”;
console.log(multiLine);
// 输出:
// 第一行
// 第二行
let path = “C:\\Windows\\System32”;
let multiLine = “第一行\n第二行”;
console.log(multiLine);
// 输出:
// 第一行
// 第二行
字符串的不可变性
JavaScript中的字符串是不可变的,这意味着一旦创建,就不能被修改。
当你看起来在”修改”字符串时,实际上JavaScript是创建了一个新的字符串。
let str = “hello”;
str[0] = “H”; // 这不会改变字符串
console.log(str); // 输出: “hello”
// 要”修改”字符串,需要创建新字符串:
let newStr = “H” + str.substring(1);
console.log(newStr); // 输出: “Hello”
str[0] = “H”; // 这不会改变字符串
console.log(str); // 输出: “hello”
// 要”修改”字符串,需要创建新字符串:
let newStr = “H” + str.substring(1);
console.log(newStr); // 输出: “Hello”
理解字符串的不可变性对于高效使用JavaScript非常重要。
字符串属性
字符串最重要的属性是length,它返回字符串的长度:
let message = “Hello, JavaScript!”;
console.log(message.length); // 输出:18
console.log(message.length); // 输出:18
注意:空格和标点符号都计入长度。
常用字符串方法
JavaScript提供了丰富的字符串方法,下面是常用的方法:
方法 | 描述 | 示例 |
---|---|---|
charAt(index) | 返回指定位置的字符 | “hello”.charAt(1) → “e” |
concat(str1, str2) | 连接字符串 | “Hi”.concat(” “, “there”) → “Hi there” |
includes(searchStr) | 检查是否包含子字符串 | “JS”.includes(“J”) → true |
indexOf(searchStr) | 返回子字符串首次出现的位置 | “JS”.indexOf(“S”) → 1 |
slice(start, end) | 提取字符串的一部分 | “JavaScript”.slice(0,4) → “Java” |
split(separator) | 将字符串拆分为数组 | “a,b,c”.split(“,”) → [“a”,”b”,”c”] |
substring(start, end) | 提取字符串的一部分 | “JS”.substring(0,1) → “J” |
toLowerCase() | 转换为小写 | “JS”.toLowerCase() → “js” |
toUpperCase() | 转换为大写 | “js”.toUpperCase() → “JS” |
trim() | 移除两端空白 | ” hello “.trim() → “hello” |
replace(old, new) | 替换子字符串 | “JS”.replace(“J”, “T”) → “TS” |
模板字符串
ES6引入了模板字符串(反引号“),它提供了更强大的字符串功能:
多行字符串
let poem = `床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。`;
疑是地上霜。
举头望明月,
低头思故乡。`;
字符串插值
可以在字符串中直接嵌入变量和表达式:
let name = “张三”;
let age = 25;
let greeting = `你好,${name}!你今年${age}岁了。`;
// 输出:你好,张三!你今年25岁了。
let age = 25;
let greeting = `你好,${name}!你今年${age}岁了。`;
// 输出:你好,张三!你今年25岁了。
表达式插值
可以在${}内使用任何有效的JavaScript表达式:
let a = 5;
let b = 10;
console.log(`5 + 10 = ${a + b}`); // 输出:5 + 10 = 15
let b = 10;
console.log(`5 + 10 = ${a + b}`); // 输出:5 + 10 = 15
字符串比较
在JavaScript中,可以使用比较运算符(==, ===, <, >)来比较字符串:
console.log(“a” === “a”); // true
console.log(“a” === “A”); // false(区分大小写)
console.log(“apple” > “banana”); // false
console.log(“10” > “2”); // false(按字符比较)
console.log(“a” === “A”); // false(区分大小写)
console.log(“apple” > “banana”); // false
console.log(“10” > “2”); // false(按字符比较)
注意:字符串比较是按字符的Unicode编码逐个比较的,所以”10″会小于”2″,因为第一个字符”1″的编码小于”2″。
练习区
尝试完成以下练习来巩固你的字符串知识:
练习1:字符串反转
编写一个函数,接受一个字符串参数,返回反转后的字符串。
function reverseString(str) {
// 你的代码
}
console.log(reverseString(“hello”)); // 应该输出 “olleh”
// 你的代码
}
console.log(reverseString(“hello”)); // 应该输出 “olleh”
练习2:回文检查
编写一个函数检查字符串是否是回文(正反读都一样)。
function isPalindrome(str) {
// 忽略大小写和非字母字符
}
console.log(isPalindrome(“racecar”)); // true
console.log(isPalindrome(“hello”)); // false
// 忽略大小写和非字母字符
}
console.log(isPalindrome(“racecar”)); // true
console.log(isPalindrome(“hello”)); // false