前端JS: 字符串API

4 阅读3分钟

JavaScript 字符串是不可变的原始值,所有字符串方法都会返回一个新字符串,而不会修改原字符串。

以下是主要的字符串方法,按功能分类列出:

一、 查找和获取

  • charAt(index) : 返回指定位置的字符。

    let str = "Hello";
    console.log(str.charAt(1)); // 输出: e
    
  • charCodeAt(index) : 返回指定位置字符的 Unicode 编码。

    console.log(str.charCodeAt(1)); // 输出: 101 (小写'e'的编码)
    
  • indexOf(searchValue, fromIndex) : 返回指定子串首次出现的位置,未找到返回 -1。

    console.log(str.indexOf("l")); // 输出: 2
    console.log(str.indexOf("z")); // 输出: -1
    
  • lastIndexOf(searchValue, fromIndex) : 返回指定子串最后出现的位置,未找到返回 -1。

    console.log(str.lastIndexOf("l")); // 输出: 3
    
  • search(regexp) : 用于搜索正则表达式的匹配,返回匹配的索引。

    console.log(str.search(/lo/)); // 输出: 3
    
  • match(regexp) : 检索与正则表达式匹配的结果,返回一个数组。

    console.log("Hello lol".match(/lo/g)); // 输出: ["lo", "lo"]
    
  • matchAll(regexp) : 返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。

    for (let match of "test1test2".matchAll(/t(e)(st(\d?))/g)) {
        console.log(match[0]); // 输出: test1, 然后 test2
    }
    

二、 截取和切片

  • slice(startIndex, endIndex) : 提取字符串的一部分,参数可为负数(从末尾算起)。

    let str = "Hello World";
    console.log(str.slice(0, 5)); // 输出: Hello
    console.log(str.slice(-5)); // 输出: World
    
  • substring(startIndex, endIndex) : 类似 slice,但不接受负参数。

    console.log(str.substring(6, 11)); // 输出: World
    
  • substr(startIndex, length) : (已弃用) 从起始索引提取指定长度的字符。

    console.log(str.substr(6, 5)); // 输出: World (不推荐使用)
    

三、 修改和生成

  • concat(string2, string3, ...) : 连接两个或多个字符串。

    console.log("Hello".concat(" ", "World")); // 输出: Hello World
    
  • repeat(count) : 返回重复原字符串指定次数的新字符串。

    console.log("Ha".repeat(3)); // 输出: HaHaHa
    
  • padStart(targetLength, padString) : 在开头填充字符串,直到达到目标长度。

    console.log("5".padStart(3, '0')); // 输出: 005
    
  • padEnd(targetLength, padString) : 在结尾填充字符串,直到达到目标长度。

    console.log("5".padEnd(3, '*')); // 输出: 5**
    

四、 替换

  • replace(searchValue, newValue) : 替换匹配的子串(仅第一个)或正则表达式。

    console.log("Hello World".replace("World", "JS")); // 输出: Hello JS
    
  • replaceAll(searchValue, newValue) : 替换所有匹配的子串或正则表达式。

    console.log("app apple".replaceAll("app", "APP")); // 输出: APP APPle
    

五、 分割和连接

  • split(separator, limit) : 将字符串按分隔符拆分为数组。

    console.log("apple,banana,orange".split(",")); // 输出: ["apple", "banana", "orange"]
    

六、 大小写转换

  • toLowerCase() : 转为小写。

    console.log("Hello".toLowerCase()); // 输出: hello
    
  • toUpperCase() : 转为大写。

    console.log("Hello".toUpperCase()); // 输出: HELLO
    
  • toLocaleLowerCase()/ toLocaleUpperCase() : 根据本地语言环境转换大小写。

    console.log('TITLE'.toLocaleLowerCase('tr-TR')); // 针对土耳其语等地区
    

七、 去除空白字符

  • trim() : 去除字符串两端的空白字符。

    console.log("  Hello  ".trim()); // 输出: "Hello"
    
  • trimStart()/ trimLeft() : 去除开头空白。

    console.log("  Hello  ".trimStart()); // 输出: "Hello  "
    
  • trimEnd()/ trimRight() : 去除结尾空白。

    console.log("  Hello  ".trimEnd()); // 输出: "  Hello"
    

八、 判断和检查

  • startsWith(searchString, position) : 检查是否以指定字符串开头。

    console.log("Hello".startsWith("He")); // 输出: true
    
  • endsWith(searchString, length) : 检查是否以指定字符串结尾。

    console.log("Hello".endsWith("lo")); // 输出: true
    
  • includes(searchString, position) : 检查是否包含指定子串。

    console.log("Hello".includes("ell")); // 输出: true
    
  • localeCompare(compareString) : 比较两个字符串在本地语言环境中的顺序。

    console.log("a".localeCompare("b")); // 输出: -1 (表示 a 在 b 前)
    

核心特性提醒:记住,字符串本身是不可变的,所有这些方法都返回一个新的字符串,而不会改变原始字符串。