什么是字符串?

字符串就是文本数据,在JavaScript中用引号包裹起来表示。

字符串(String)是由零个或多个字符组成的序列,用于表示文本数据。

// 字符串示例
let greeting = “你好,世界!”;
let name = ‘张三’;
let message = `JavaScript字符串`;

在JavaScript中,你可以使用单引号(‘)、双引号(“)或反引号(`)来创建字符串。

创建字符串的三种方式

创建字符串有三种常见的方法:

// 1. 使用双引号
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);
// 输出:
// 第一行
// 第二行

字符串的不可变性

JavaScript中的字符串是不可变的,这意味着一旦创建,就不能被修改。

当你看起来在”修改”字符串时,实际上JavaScript是创建了一个新的字符串。

let str = “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

注意:空格和标点符号都计入长度。

常用字符串方法

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岁了。

表达式插值

可以在${}内使用任何有效的JavaScript表达式:

let a = 5;
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(按字符比较)

注意:字符串比较是按字符的Unicode编码逐个比较的,所以”10″会小于”2″,因为第一个字符”1″的编码小于”2″。

练习区

尝试完成以下练习来巩固你的字符串知识:

练习1:字符串反转

编写一个函数,接受一个字符串参数,返回反转后的字符串。

function reverseString(str) {
  // 你的代码
}
console.log(reverseString(“hello”)); // 应该输出 “olleh”

练习2:回文检查

编写一个函数检查字符串是否是回文(正反读都一样)。

function isPalindrome(str) {
  // 忽略大小写和非字母字符
}
console.log(isPalindrome(“racecar”)); // true
console.log(isPalindrome(“hello”)); // false