JS中字符串常用方法

文章类型:Javascript

发布者:admin

发布时间:2023-02-24

1. 获取字符串长度

JavaScript 中的字符串有一个 length 属性,该属性可以用来获取字符串的长度:

const str = "hello";
str.length; // 输出结果:5

2. 获取字符串指定位置的值

charAt()和 charCodeAt()方法都可以通过索引来获取指定位置的值:

charAt() 方法获取到的是指定位置的字符;

const str = "hello";
str.charAt(1); // 输出结果:e

字符串也可以通过索引值来直接获取对应字符,那它和 charAt()有什么区别呢

const str = "hello";
str.charAt(1); // 输出结果:e
str[1]; // 输出结果:e
str.charAt(5); // 输出结果:''
str[5]; // 输出结果:undefined

可以看到,当 index 的取值不在 str 的长度范围内时,str[index]会返回 undefined,而 charAt(index)会返回空字符串;除此之外,str[index]不兼容 ie6-ie8,charAt(index)可以兼容。

charCodeAt()方法获取的是指定位置字符的 Unicode 值。

let str = "abcdefg";
console.log(str.charCodeAt(1)); // "b" --> 98

3. 检索字符串是否包含特定序列

(1)indexOf() 查找某个字符,有则返回第一次匹配到的位置,否则返回-1

let str = "abcdefgabc";
console.log(str.indexOf("a")); // 输出结果:0
console.log(str.indexOf("z")); // 输出结果:-1
console.log(str.indexOf("c", 4)); // 输出结果:9

(2)lastIndexOf() 查找某个字符,有则返回最后一次匹配到的位置,否则返回-1

查找某个字符,有则返回最后一次匹配到的位置,否则返回-1let str = "abcabc";
console.log(str.lastIndexOf("a")); // 输出结果:3
console.log(str.lastIndexOf("z")); // 输出结果:-1

(3)includes() 用于判断字符串是否包含指定的子字符串。如果找到匹配的字符串则返回 true,否则返回 false


let str = "Hello world!";

str.includes("o"); // 输出结果:true
str.includes("z"); // 输出结果:false
str.includes("e", 2); // 输出结果:false

(4)startsWith() 用于检测字符串是否以指定的子字符串开始。如果是以指定的子字符串开头返回 true,否则 false

let str = "Hello world!";

str.startsWith("Hello"); // 输出结果:true
str.startsWith("Helle"); // 输出结果:false
str.startsWith("wo", 6); // 输出结果:true

(5)endsWith() 用来判断当前字符串是否是以指定的子字符串结尾。如果传入的子字符串在搜索字符串的末尾则返回 true,否则将返回 false

let str = "Hello world!";

str.endsWith("!"); // 输出结果:true
str.endsWith("llo"); // 输出结果:false
str.endsWith("llo", 5); // 输出结果:true

4. 连接多个字符串

concat() 方法用于连接两个或多个字符串。该方法不会改变原有字符串,会返回连接两个或多个字符串的新字符串

let str = "abc";
console.log(str.concat("efg")); //输出结果:"abcefg"
console.log(str.concat("efg", "hijk")); //输出结果:"abcefghijk"

5. 字符串分割成数组

split() 方法用于把一个字符串分割成字符串数组。该方法不会改变原始字符串

let str = "abcdef";
str.split("c"); // 输出结果:["ab", "def"]
str.split("", 4); // 输出结果:['a', 'b', 'c', 'd']

6. 截取字符串

(1) slice() 方法用于提取字符串的某个部分,并以新的字符串返回被提取的部分

let str = "abcdefg";
str.slice(1, 6); // 输出结果:"bcdef"
str.slice(1); // 输出结果:"bcdefg"
str.slice(); // 输出结果:"abcdefg"
str.slice(-2); // 输出结果:"fg"
str.slice(6, 1); // 输出结果:""

(2) substr() 用于在字符串中抽取从开始下标开始的指定数目的字符

let str = "abcdefg";
str.substr(1, 6); // 输出结果:"bcdefg"
str.substr(1); // 输出结果:"bcdefg" 相当于截取[1,str.length-1]
str.substr(); // 输出结果:"abcdefg" 相当于截取[0,str.length-1]
str.substr(-1); // 输出结果:"g"

(3) substring()用于提取字符串中介于两个指定下标之间的字符

let str = "abcdefg";
str.substring(1, 6); // 输出结果:"bcdef" [1,6)
str.substring(1); // 输出结果:"bcdefg" [1,str.length-1]
str.substring(); // 输出结果:"abcdefg" [0,str.length-1]
str.substring(6, 1); // 输出结果 "bcdef" [1,6)
str.substring(-1); // 输出结果:"abcdefg"

7. 字符串大小写转换

(1)toLowerCase()用于把字符串转换为小写。

let str = "adABDndj";
str.toLowerCase(); // 输出结果:"adabdndj"

(2)toUpperCase()用于把字符串转换为大写。

let str = "adABDndj";
str.toUpperCase(); // 输出结果:"ADABDNDJ"

8. 字符串模式匹配

(1)replace()用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串

let str = "abcdef";
str.replace("c", "z"); // 输出结果:abzdef

(2)match() 用于在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

let str = "abcdef";
console.log(str.match("c")); // ["c", index: 2, input: "abcdef", groups: undefined]

(3)search() 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串

let str = "abcdef";
str.search(/bcd/); // 输出结果:1

9. 移除字符串收尾空白符

(1)trim()用于移除字符串首尾空白符,该方法不会改变原始字符串

let str = "  abcdef  ";
str.trim(); // 输出结果:"abcdef"

(2)trimStart()返回一个从原始字符串的开头删除了空白的新字符串,不会修改原始字符串

const s = "  abc  ";

s.trimStart(); // "abc "

(3)trimEnd()返回一个从原始字符串的结尾删除了空白的新字符串,不会修改原始字符串

const s = "  abc  ";

s.trimEnd(); // " abc"

10. 获取字符串本身

(1)valueOf() 返回某个字符串对象的原始值

let str = "abcdef";
console.log(str.valueOf()); // "abcdef"

(2)toString()返回字符串对象本身

let str = "abcdef";
console.log(str.toString()); // "abcdef"

11. 重复一个字符串

repeat() 方法返回一个新字符串,表示将原字符串重复 n 次:

"x".repeat(3); // 输出结果:"xxx"
"hello".repeat(2); // 输出结果:"hellohello"
"na".repeat(0); // 输出结果:""
"na".repeat(2.9); // 输出结果:"nana"

12. 补齐字符串长度

(1)padStart()用于头部补全

"1".padStart(3, "0"); // 输出结果: '001'
"15".padStart(3, "0"); // 输出结果: '015'

(2)padEnd()用于尾部补全

"x".padEnd(5, "ab"); // 'xabab'
"x".padEnd(4, "ab"); // 'xaba'

13. 字符串转为数字

(1)parseInt()用于可解析一个字符串,并返回一个整数

parseInt("10"); // 输出结果:10
parseInt("17", 8); // 输出结果:15 (8+7)
parseInt("010"); // 输出结果:10 或 8

(2)parseFloat()可解析一个字符串,并返回一个浮点数

parseFloat("10.00"); // 输出结果:10.00
parseFloat("10.01"); // 输出结果:10.01
parseFloat("-10.01"); // 输出结果:-10.01
parseFloat("40.5 years"); // 输出结果:40.5