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

JavaScript里的string

一、字符串的创建方式

1. 字面量方式(推荐)
const str1 = 'Hello'; // 单引号
const str2 = "World"; // 双引号
const str3 = `Hello, ${str2}!`; // 反引号(模板字符串,支持变量和换行)
2. 构造函数方式(创建字符串对象)
const strObj = new String('Hello');
console.log(typeof strObj); // "object"(注意:是对象类型)
console.log(strObj.valueOf()); // "Hello"(获取原始值)

通常推荐使用字面量方式,因为字符串对象在比较和使用时可能产生意外(如 new String('a') === 'a'false)。

二、字符串的核心特性

  1. 不可变性
    字符串一旦创建,其字符就不能被修改(所有字符串方法都会返回新字符串,不改变原字符串):
 let str = 'abc';str[0] = 'A'; // 尝试修改第一个字符(无效)console.log(str); // "abc"(原字符串不变)
  1. 可索引访问
    可以通过索引(从 0 开始)访问单个字符:
const str = 'hello';console.log(str[0]); // "h"console.log(str[str.length - 1]); // "o"(最后一个字符)
  1. 长度属性 length
    用于获取字符串的字符数量:
const str = 'Hello World';console.log(str.length); // 11(包含空格)

三、常用字符串方法

1. 查找与定位
  • indexOf(searchValue, startIndex):返回子串首次出现的索引(未找到返回 -1
 const str = 'hello world';console.log(str.indexOf('o')); // 4console.log(str.indexOf('o', 5)); // 7(从索引5开始找)
  • lastIndexOf(searchValue):返回子串最后一次出现的索引

    console.log(str.lastIndexOf('o')); // 7
    
  • includes(searchValue):判断字符串是否包含子串(返回布尔值)

    console.log(str.includes('world')); // true
    
  • startsWith(searchValue) / endsWith(searchValue):判断是否以子串开头/结尾

    console.log(str.startsWith('hello')); // true
    console.log(str.endsWith('d')); // true
    
2. 截取与提取
  • slice(startIndex, endIndex):截取从 startend(不包含 end)的子串

    const str = 'abcdef';
    console.log(str.slice(1, 4)); // "bcd"
    console.log(str.slice(2)); // "cdef"(从索引2到结尾)
    console.log(str.slice(-3)); // "def"(负数表示从末尾开始)
    
  • substring(startIndex, endIndex):类似 slice,但不支持负数索引

  • substr(startIndex, length):从 start 开始截取指定长度的子串(ES6 后不推荐)

3. 转换与替换
  • toUpperCase() / toLowerCase():转换为大写/小写

    const str = 'Hello World';
    console.log(str.toUpperCase()); // "HELLO WORLD"
    console.log(str.toLowerCase()); // "hello world"
    
  • replace(searchValue, replacement):替换子串(默认只替换第一个匹配项)

    console.log(str.replace('World', 'JavaScript')); // "Hello JavaScript"
    // 全局替换(用正则表达式)
    console.log('aaa'.replace(/a/g, 'b')); // "bbb"
    
  • split(separator):将字符串按分隔符拆分为数组

    const str = 'a,b,c,d';
    console.log(str.split(',')); // ["a", "b", "c", "d"]
    console.log('hello'.split('')); // ["h", "e", "l", "l", "o"](拆分为单个字符)
    
4. 其他常用方法
  • trim():去除字符串前后的空白字符(空格、制表符、换行等)

    const str = '  hello  ';
    console.log(str.trim()); // "hello"
    
  • repeat(count):将字符串重复指定次数

    console.log('ab'.repeat(3)); // "ababab"
    
  • charAt(index):返回指定索引的字符(与 str[index] 类似)

    console.log('hello'.charAt(2)); // "l"
    

四、模板字符串(反引号 `

ES6 引入的模板字符串提供了更强大的字符串处理能力:

  1. 支持多行文本(无需手动加 \n):
const multiLine = `第一行
第二行
第三行`;
  1. 嵌入变量或表达式(用 ${} 包裹):
const name = '张三';
const age = 18;
const info = `姓名:${name},年龄:${age + 1}`;
console.log(info); // "姓名:张三,年龄:19"
  1. 支持表达式计算
 const result = `1 + 2 = ${1 + 2}`;console.log(result); // "1 + 2 = 3"

五、字符串与数组的转换

  • 字符串 → 数组:用 split('') 或扩展运算符 [...str]
  const str = 'hello';console.log([...str]); // ["h", "e", "l", "l", "o"]
  • 数组 → 字符串:用 Array.join('')
  const arr = ['h', 'i'];console.log(arr.join('')); // "hi"
http://www.xdnf.cn/news/16434.html

相关文章:

  • 使用Python实现单词记忆软件
  • Zookeeper的简单了解
  • 兼容性问题记录
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现轮船检测识别(C#代码UI界面版)
  • 【C/C++】Undefined reference: memset_s
  • 港股历史逐笔十档分钟级订单簿行情数据分析
  • 黑屏运维OceanBase数据库的常见案例
  • 【算法】前缀和经典例题
  • Kubernetes 监控完全指南:PromQL 通用查询与最佳实践
  • Claude 4.0 终极编程指南:模型对比、API配置与IDE集成实战
  • 深度解析【JVM】三大核心架构:运行时数据区、类加载与垃圾回收机制
  • OGG同步Oracle到Kafka不停库,全量加增量
  • 《汇编语言:基于X86处理器》第9章 编程练习
  • 新房装修是中央空调还是壁挂空调好?
  • 背包DP之完全背包
  • Agentic RAG理解和简易实现
  • UG创建的实体橘黄色实体怎么改颜色?
  • HCIP上HCIA复习静态综合实验
  • 【Java、C、C++、Python】飞机订票系统---文件版本
  • 基于springboot的小区车位租售管理系统
  • dart使用
  • 从入门到进阶:JavaScript 学习之路与实战技巧
  • C++学习笔记(十:类与对象基础)
  • 内存优化:从堆分配到零拷贝的终极重构
  • 【笔记】Handy Multi-Agent Tutorial 第四章: CAMEL框架下的RAG应用 (简介)
  • linux-开机启动流程
  • 蓝桥杯java算法例题
  • NOIP 模拟赛 7
  • ZYNQ芯片,SPI驱动开发自学全解析个人笔记【FPGA】【赛灵思
  • 同声传译新突破!字节跳动发布 Seed LiveInterpret 2.0