JS 字符串 常用API汇总+注意事项整理

字符串常用API

在这里插入图片描述

长度 str.length

"abc".length
console.log("abc".length) // 3

在这里插入图片描述

访问字符(下标 或者 charAt(i) )

const str = "abc"
console.log("abc"[2]) // 'c'
console.log("abc".charAt(2)) // 'c'

在这里插入图片描述

获取子串 slice…

slice(start, end) ~推荐【左闭右开】 从 start 开始,到 end(不含)
substring(start, end)【左闭右开】 从 start 开始,到 end(不含)
substr(start, length) 不推荐使用

slice 支持负数,substring 不支持负数(不推荐用 substr)

const str = "abcdef";
str.slice(1, 4); // "bcd"  左闭右开,取 [1, 4)
str.slice(-2);   // "ef"  支持负数,从倒数第2个开始
  • 三个方法都“最多”接收两个参数,但只传一个参数也可以
    负数支持:start 和 end 都支持负数
    左闭右开:[start, end),不含 end
    这里以slice为例,推荐就用这个
"abcdef".slice(2);       // "cdef" → 从 index 2 开始到末尾
"abcdef".slice(2, 4);    // "cd"
"abcdef".slice(-2);      // "ef"
"abcdef".slice(-3, -1);  // "de"

查找

indexOf(str)
lastIndexOf(str)
includes(str)
startsWith(str)
endsWith(str)

  • indexOf(str[, fromIndex])
    从前往后找第一个匹配项
    返回索引或 -1
    注意:包括fromIndex,注意大写
const str = "hello world";
str.indexOf("o");         // 4
str.indexOf("o", 5);      // 7,从 index 5 开始找
str.indexOf("z");         // -1,找不到

在这里插入图片描述

  • lastIndexOf(str[, fromIndex])
    从后往前找第一个匹配项
    返回索引或 -1
    注意:包括fromIndex,注意大写
const str = "hello world";
str.lastIndexOf("o");     // 7
str.lastIndexOf("o", 6);  // 4,从 index 6 向前找

在这里插入图片描述

  • includes(str[, fromIndex])
    判断是否包含子串(推荐用法,语义清晰)
    包括 fromIndex
    返回 true false
const str = "hello world";
str.includes("world");    // true
str.includes("world", 6);
str.includes("world", 7); // false,从 index 7 开始找

在这里插入图片描述

  • startsWith(str[, fromIndex])
    判断字符串是否“以 str 开头”,返回true false
    可以指定从哪个 index 开始判断(不是截断)
const str = "hello world";
str.startsWith("hello");     // true
str.startsWith("world");     // false
str.startsWith("world", 6);  // true(从 index 6 开始看,是否以 "world" 开头)

在这里插入图片描述

  • endsWith(str[, length])
    判断是否以 str 结尾
    第二个参数是“把[前几个]字符当作整个字符串进行判断”
const str = "hello world";
str.endsWith("world");       // true
str.endsWith("world", 11);   // true(默认是整个字符串)
str.endsWith("hello", 5);    // true(判断前5个字符是否以 hello 结尾)

在这里插入图片描述

修改 replace

replace(旧, 新) 第一个匹配项 , 只替换第一个
replaceAll(旧, 新) 所有匹配项 , 替换全部

const str = 'a+b+c';

// 只替换第一个 +
str.replace('+', '-');     
// "a-b+c"

// 全部替换(推荐 replaceAll)
str.replaceAll('+', '-');  
// "a-b-c"

拆分 str.split(separator, limit);

用法1 拆成字符数组,常用于翻转/处理

let str = "abc";
str = str.split('').reverse().join(''); // 变成字符数组 用数组的翻转方法 再拼成字符串

用法2 按空格分开+数组解构 = 处理ACM输入

"hello world 2024".split(" "); 
// ["hello", "world", "2024"]

拼接

  • 加法 +

  • concat()

字符的编码

charCodeAt() 是字符串实例的方法,可以“在字符串上使用”
fromCharCode() 是 String 的静态方法,用于从编码值生成字符串

'a'.charCodeAt() // 97
String.fromCharCode(97) // 'a'
const str = "abc";

str.charCodeAt(0);         // 97  → 'a' 的编码
str.charCodeAt(1);         // 98  → 'b'

String.fromCharCode(97);   // "a"
String.fromCharCode(65);   // "A"

字符串的本质

JS 中的字符串是不可变的(immutable),所有的操作如 slice、replace、toUpperCase 等,都不会修改原字符串本身,而是返回一个新字符串。

  • 那什么叫“字符串不可变”?
    = 无法直接修改某个字符串中的某个字符,比如这样是无效的:
    在这里插入图片描述
    在这里插入图片描述

力扣相关题

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值