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 前)
核心特性提醒:记住,字符串本身是不可变的,所有这些方法都返回一个新的字符串,而不会改变原始字符串。