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

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.lryc.cn/news/600763.html

相关文章:

  • 前端设计中如何在鼠标悬浮时同步修改块内样式
  • 【机器学习深度学习】LLamaFactory微调效果与vllm部署效果不一致如何解决
  • k8s的nodeport和ingress
  • 什么是JUC
  • Voxtral Mini:语音转文本工具,支持超长音频,多国语音
  • 9.3 快速傅里叶变换
  • Docker常用命令详解:以Nginx为例
  • gig-gitignore工具实战开发(五):gig add完善
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 热词评论查询功能实现
  • Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
  • Android ADB命令之内存统计与分析
  • Java学习|黑马笔记|Day23】网络编程、反射、动态代理
  • 深入理解C语言快速排序与自省排序(Introsort)
  • 安卓服务与多线程
  • 学习嵌入式的第三十天-数据结构-(2025.7.21)网络编程
  • 系统性学习C语言-第二十三讲-文件操作
  • 台式电脑有多个风扇开机只有部分转动的原因
  • Matlab自学笔记六十五:解方程的数值解法(代码速成)
  • Nacos-服务注册,服务发现(二)
  • 八股文整理——计算机网络
  • 容器化成本优化:K8s资源请求与限制的黄金法则——从资源画像分析到25%成本削减的实战指南
  • 记录和分享抓取的数字货币和大A时序数据
  • 什么是ICMP报文?有什么用?
  • Matlab学习笔记:自定义函数
  • java基础(day16)set-map
  • DAY24 元组和OS模块
  • 【安全漏洞】网络守门员:深入理解与应用iptables,守护Linux服务器安全
  • Java基础-文件操作
  • spring Could 高频面试题
  • 面试问题总结——关于OpenCV(二)