JavaScript 数据类型 - 字符串

JavaScript 字符串

1. 字符串基础

  • 定义:字符串是由单引号'、双引号"或反引号`括起来的任意文本。例如:

    let str1 = 'Hello'; // 单引号
    let str2 = "World"; // 双引号
    let str3 = `JavaScript`; // 反引号
    
  • 引号的使用

    • 如果字符串内部包含单引号或双引号,可以使用另一种引号括起来:
      let str = 'I\'m "OK"'; // 使用单引号括起来,内部的单引号需要转义
      let str2 = "He said, \"I'm fine.\""; // 使用双引号括起来,内部的双引号需要转义
      
    • 如果字符串内部既包含单引号又包含双引号,可以使用反引号:
      let str = `He said, "I'm fine."`; // 使用反引号,无需转义
      
  • 转义字符:使用\对特殊字符进行转义,例如:

    • \n:换行符
    • \t:制表符
    • \\:表示反斜杠本身
    • \x##:ASCII字符的十六进制表示,例如\x41等同于'A'
    • \u####:Unicode字符的表示,例如\u4e2d\u6587等同于'中文'
    let str = 'This is a\nnew line'; // 包含换行符
    let str2 = 'This is a\ttab'; // 包含制表符
    let str3 = 'A backslash: \\'; // 包含反斜杠
    let str4 = '\x41'; // 等同于 'A'
    let str5 = '\u4e2d\u6587'; // 等同于 '中文'
    

2. 多行字符串

  • 多行字符串的表示:使用反引号(`)可以创建多行字符串,而无需使用特殊的转义字符。
    let multiLineStr = `
    This is a
    multi-line
    string.
    `;
    console.log(multiLineStr);
    

3. 模板字符串

  • 模板字符串的定义:模板字符串是ES6引入的一种创建字符串的新方式,使用反引号(`)包裹字符串内容。

  • 基本用法

    • 可以在模板字符串中嵌入变量和表达式,使用${expression}语法。
    let name = '小明';
    let age = 20;
    let message = `你好, ${name}, 你今年${age}岁了!`;
    console.log(message); // 输出:你好,小明,你今年20岁了
    
    • 模板字符串支持多行文本,无需额外的转义字符。
    let multiLineText = `
    这是一个
    多行文本
    `;
    console.log(multiLineText);
    
  • 嵌入表达式:模板字符串中可以嵌入任意JavaScript表达式,包括运算符、函数调用等。

    let x = 10;
    let y = 20;
    let result = `两数之和是:${x + y}`; // 嵌入表达式
    console.log(result); // 输出:两数之和是:30
    
    function getGreeting(name) {
        return `Hello, ${name}!`;
    }
    console.log(getGreeting('小红')); // 输出:Hello, 小红!
    

4. 字符串操作

4.1 获取字符串长度

  • 使用length属性获取字符串的长度。
    let s = 'Hello, world!';
    console.log(s.length); // 输出:13
    

4.2 索引操作

  • 使用类似数组的索引操作符[]访问字符串中的字符,索引从0开始。
    let s = 'Hello, world!';
    console.log(s[0]); // 输出:'H'
    console.log(s[6]); // 输出:' '
    console.log(s[12]); // 输出:'!'
    
  • 注意:字符串是不可变的,对字符串的某个索引赋值不会改变字符串。
    let s = 'Test';
    s[0] = 'X';
    console.log(s); // 输出:'Test'(字符串未改变)
    

4.3 转换大小写

  • toUpperCase():将字符串转换为大写。
    let s = 'Hello';
    console.log(s.toUpperCase()); // 输出:'HELLO'
    
  • toLowerCase():将字符串转换为小写。
    let s = 'Hello';
    console.log(s.toLowerCase()); // 输出:'hello'
    

4.4 查找子字符串

  • indexOf():从字符串开头开始查找指定子字符串的位置,未找到时返回-1
    let s = 'hello, world';
    console.log(s.indexOf('world')); // 输出:7
    console.log(s.indexOf('World')); // 输出:-1(区分大小写)
    
  • lastIndexOf():从字符串末尾开始查找指定子字符串的位置,未找到时返回-1
    let s = 'hello, world, hello';
    console.log(s.lastIndexOf('hello')); // 输出:13
    

4.5 截取子字符串

  • substring(start, end):截取从start索引开始到end索引(不包括end)的子字符串。
    let s = 'hello, world';
    console.log(s.substring(0, 5)); // 输出:'hello'
    console.log(s.substring(7)); // 输出:'world'
    
  • slice(start, end):与substring类似,但支持负索引。
    let s = 'hello, world';
    console.log(s.slice(0, 5)); // 输出:'hello'
    console.log(s.slice(-5)); // 输出:'world'
    

4.6 替换字符串

  • replace():用于替换字符串中的内容。可以替换一次或全部,支持正则表达式。
    let s = 'hello, world';
    console.log(s.replace('world', 'JavaScript')); // 输出:'hello, JavaScript'
    console.log(s.replace(/world/g, 'JavaScript')); // 全局替换
    

4.7 分割字符串

  • split():将字符串分割成数组,可以指定分隔符。
    let s = 'hello,world,javascript';
    console.log(s.split(',')); // 输出:['hello', 'world', 'javascript']
    

4.8 检查字符串

  • includes():检查字符串是否包含指定子字符串,返回布尔值。
    let s = 'hello, world';
    console.log(s.includes('world')); // 输出:true
    console.log(s.includes('JavaScript')); // 输出:false
    
  • startsWith():检查字符串是否以指定子字符串开头,返回布尔值。
    let s = 'hello, world';
    console.log(s.startsWith('hello')); // 输出:true
    
  • endsWith():检查字符串是否以指定子字符串结尾,返回布尔值。
    let s = 'hello, world';
    console.log(s.endsWith('world')); // 输出:true
    

5. 练习

let s = 'Hello World';
let upper = s.toUpperCase(); // 转换为大写
let lower = s.toLowerCase(); // 转换为小写
let indexof = s.indexOf('world'); // 查找子字符串
let aSubstring = s.substring(7); // 截取子字符串
console.log(upper); // 输出:HELLO WORLD
console.log(lower); // 输出:hello world
console.log(indexof); // 输出:-1(未找到)
console.log(aSubstring); // 输出:orld
posted @ 2025-03-19 22:43  kyle_7Qc  阅读(78)  评论(0)    收藏  举报