> 文章列表 > JS常用字符串方法

JS常用字符串方法

JS常用字符串方法

📝个人主页:爱吃炫迈
💌系列专栏:数据结构与算法
🧑‍💻座右铭:道阻且长,行则将至💗

文章目录

  • 移除字符串首尾空白符
    • trim()
    • trimStart()
    • trimEnd()
  • 获取字符串指定位置的值
    • charAt()
    • charCodeAt()
    • indexOf()
    • lastIndexOf()
    • includes()
    • startsWith()
    • endsWith()
  • 连接多个字符串
    • concat()
  • 字符串分割成数组
    • split()
  • 截取字符串
    • slice()
    • substr()
    • substring()
  • 字符串大小写转换
    • toLowerCase()
    • toUpperCase()
  • 字符串模式匹配
    • replace()
    • match()
    • search()
  • 获取字符串本身
    • valueOf()
    • toString()
  • 重复字符串
    • repeat()
  • 补齐字符串长度
    • padStart(),padEnd()
  • 字符串转换为数字
    • parseInt()
    • parseFloat()
    • parseFloat()

移除字符串首尾空白符

trim()

trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。

let s = "  hello wor  d   ";
let s1 = s.trim();
console.log(s);
console.log(s1);

JS常用字符串方法

trimStart()

trimStart()方法用于删除字符串开头的空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。

let s = "  a bc   ";
let s1 = s.trimStart();
console.log(s);
console.log(s1);

JS常用字符串方法

trimEnd()

trimEnd()方法用于删除字符串结尾的空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。

let s = "  a bc   ";
let s1 = s.trimEnd();
console.log(s);
console.log(s1);

JS常用字符串方法

获取字符串指定位置的值

charAt()

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

语法

当index的取值不在str的长度范围内时,s[index]会返回undefined,而charAt(index)会返回空字符串;

案例

let s = "abc";
let s1 = s.charAt(1);
let s2 = s.charAt(4);
console.log(s[1]);
console.log(s1);console.log(s[4]);
console.log(s2);

JS常用字符串方法

charCodeAt()

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

案例

let s = "abc";
let s1 = s.charCodeAt(1);
console.log(s[1]);
console.log(s1);

JS常用字符串方法

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

indexOf()

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

语法

string.indexOf(searchvalue,fromindex)
  • searchvalue:必需,规定需查找的字符串值;
  • fromindex:可选,规定在字符串中开始检索的位置。它的合法取值是 0 到 string.length - 1。如省略该参数,则从字符串的首字符开始检索。

案例

let s = "abcdefgabcdefg";
console.log(s.indexOf("a"));     //输出0
console.log(s.indexOf("z"));     //输出-1
console.log(s.indexOf("a", 1));  //输出7
console.log(s.indexOf("a", 20));  //输出-1

lastIndexOf()

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

案例

let s = "abcdefgabcdefg";
console.log(s.lastIndexOf("a"));   //输出7
console.log(s.lastIndexOf("z"));   //输出-1

includes()

判断字符串是否包含指定的子字符串。如果包含子字符串则返回 true,否则返回 false。

语法

string.includes(searchvalue, start)
  • searchvalue:必需,规定要查找的字符串值;
  • start:可选,规定在字符串中开始检索的位置,默认为 0。

案例

let s = "abcdefgabcdefg";
console.log(s.includes("a")); // 输出结果:true
console.log(s.includes("a", 1)); // 输出结果:true
console.log(s.includes("z")); // 输出结果:false
console.log(s.includes("abc")); // 输出结果:true
console.log(s.includes("abc", 1)); // 输出结果:true
console.log(s.includes("abc", 8)); // 输出结果:false

startsWith()

判断当前字符串是否以指定的子字符串开始。如果是以指定的子字符串开头返回 true,否则 false。

语法

string.startsWith(searchvalue, start)
  • searchvalue:必需,规定要查找的字符串值;
  • start:可选,规定在字符串中开始检索的位置,默认值为 0。

案例

let s = "abcdefgabcdefg";
console.log(s.startsWith("a")); // 输出结果:true
console.log(s.startsWith("a", 1)); // 输出结果:false
console.log(s.startsWith("b", 1)); // 输出结果:true
console.log(s.startsWith("abc")); // 输出结果:true
console.log(s.startsWith("abc", 1)); // 输出结果:false
console.log(s.startsWith("abc", 7)); // 输出结果:true

endsWith()

判断当前字符串是否是以指定的子字符串结尾。如果是以指定的子字符串结尾返回 true,否则 false。

语法

string.endsWith(searchvalue, length)
  • searchvalue:必需,规定要查找的字符串值;
  • length: 可选:规定字符串的长度,默认值为原始字符串长度 string.length。

案例

let s = "abcdefgabcdefg";
console.log(s.endsWith("g")); // 输出结果:true
console.log(s.endsWith("g", 13)); // 输出结果:false
console.log(s.endsWith("f")); // 输出结果:false
console.log(s.endsWith("f", s.length - 1)); // 输出结果:true
console.log(s.endsWith("efg")); // 输出结果:true
console.log(s.endsWith("efg", 7)); // 输出结果:true

连接多个字符串

concat()

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

语法

string.concat(string1, string2, ..., stringn)

案例

let s = "abc";
console.log(s); // 输出结果:abc
console.log(s.concat("def")); // 输出结果:abcdef
console.log(s.concat("def", "ghi")); // 输出结果:abcdefghi

字符串分割成数组

split()

将一个字符串分割成字符串数组。该方法不会改变原始字符串

语法

string.split(separator,limit)
  • separator:必需。字符串或正则表达式,从该参数指定的地方分割字符串。
  • limit:可选。该参数可指定返回的数组的最大长度。默认值为字符串长度string.length。

案例

let s = "abc dd e";
console.log(s); // 输出结果:abc dd e
console.log(s.split("")); // 输出结果:['a', 'b', 'c',' ', 'd', 'd',' ', 'e']
console.log(s.split(" ")); // 输出结果:[ 'abc', 'dd', 'e' ]
console.log(s.split("a")); // 输出结果:[ '', 'bc dd e' ]
console.log(s.split("c")); // 输出结果:[ 'ab', ' dd e' ]
console.log(s.split("d")); // 输出结果:[ 'abc ', '', ' e' ]
console.log(s.split("e")); // 输出结果:[ 'abc dd ', '' ]
console.log(s.split("c", 1)); // 输出结果:[ 'ab' ]
console.log(s.split("c", 2)); // 输出结果:[ 'ab', ' dd e' ]
  • 在将字符串分割成数组时,可以同时拆分多个分割符,使用正则表达式即可实现:
let s = "abc,dd;e";
console.log(s); // 输出结果:abc,dd;e
console.log(s.split(/[,;]/)); // 输出结果:[ 'abc', 'dd', 'e' ]

截取字符串

slice()

截取字符串的某个部分,并以新的字符串返回被截取的部分,即会改变原来的字符串。

语法

string.slice(start,end)
  • start:必需。 要截取字符串的起始下标。如果为负数,则从尾部开始截取,最后一个字符的下标是-1,倒数第二个字符的下标是-2,以此类推
  • end:可选。 要截取的字符串结尾的下标。不可以为负数

案例

let s = "abcdefg";
console.log(s.slice(0)); // 输出结果:abcdefg
console.log(s.slice(1)); // 输出结果:bcdefg
console.log(s.slice(6)); // 输出结果:g
console.log(s.slice(-2)); // 输出结果:fg
console.log(s.slice(1, 4)); // 输出结果:bcd
console.log(s.slice(-2, 6)); // 输出结果:f
console.log(s.slice(4, 1)); // 输出结果:""
console.log(s.slice(-2, -3)); // 输出结果:""
console.log(s.slice(5, -2)); // 输出结果:""

substr()

截取从指定下标开始的指定长度的字符串。

语法

string.substr(start,length)
  • start :必需。截取的字符串的起始下标。必须是数值。如果为负数,则从尾部开始截取,最后一个字符的下标是-1,倒数第二个字符的下标是-2,以此类推
  • length:可选。截取的字符串的长度。必须是数值,不可以为负数

案例

let s = "abcdefg";
console.log(s.substr()); // 输出结果:abcdefg
console.log(s.substr(0)); // 输出结果:abcdefg
console.log(s.substr(1)); // 输出结果:bcdefg
console.log(s.substr(-1)); // 输出结果:g
console.log(s.substr(-2)); // 输出结果:fg
console.log(s.substr(-2, -1)); // 输出结果:""
console.log(s.substr(0, 3)); // 输出结果:abc

substring()

截取字符串中介于两个指定下标之间的字符。

语法

string.substring(from, to)
  • [from, to)
  • from:必需。一个非负的整数,规定要提取的子串在字符串中的起始位置。
  • to:可选。一个非负的整数,规定要提取的子串在字符串中的结尾位置,但不包含该位置的字符串。如果省略该参数,那么返回的子串会一直到字符串的结尾。

案例

let s = "abcdefg";
console.log(s.substring(1)); // 输出结果:bcdefg
console.log(s.substring(1, 3)); // 输出结果:bc
console.log(s.substring(3, 1)); // 输出结果:bc

字符串大小写转换

toLowerCase()

将字符串转换为小写,不改变原始字符串

let s = "AbCdefG";
console.log(s); // 输出结果:AbCdefG
console.log(s.toLowerCase()); // 输出结果:abcdefg

toUpperCase()

把字符串转换为大写,不改变原始字符串

let s = "AbCdefG";
console.log(s); // 输出结果:AbCdefG
console.log(s.toUpperCase()); // 输出结果:ABCDEFG

字符串模式匹配

replace()

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

语法

string.replace(searchvalue, newvalue)

searchvalue:必需。规定子字符串或要替换的模式的 RegExp 对象。如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。( RegExp 对象即正则表达式)
newvalue:必需。一个字符串值。规定了替换文本或生成替换文本的函数。

案例

let s = "abcdefg";
console.log(s); // 输出结果:abcdefg
console.log(s.replace("c", "z")); // 输出结果:abzdefg

match()

在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

案例

let s = "abcdefg";
console.log(s); // 输出结果:abcdefg
console.log(s.match("c")); 
// 输出结果:[ 'c', index: 2, input: 'abcdefg', groups: undefined ]

search()

检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,返回第一个子字符串相匹配的起始位置。

语法

string.search(searchvalue)
  • searchvalue:要检索的子字符串

案例

let s = "abcdefg";
console.log(s); // 输出结果:abcdefg
console.log(s.search("c")); // 输出结果:2

获取字符串本身

valueOf()

返回字符串对象的原始值

let s = ["abc", "efg"];
console.log(s.valueOf()); // 输出结果:[ 'abc', 'efg' ]

toString()

返回字符串对象本身,将其他类型数据转换成字符串

let s = ["abc", "efg"];
let s1 = "abc";
let s2 = "123";
console.log(s.toString()); // 输出结果:abc,efg
console.log(s1.toString()); // 输出结果:abc
console.log(typeof s2.toString()); // 输出结果:string

重复字符串

repeat()

重复字符串

语法

string.repeat(count)
  • count表示字符串重复的次数
  • count如果是小数,会向下取整
  • count如果是负数,会报错
  • count如果是字符串,则先将字符串转换成数字

案例

let s = "a";
console.log(s.repeat(3)); // 输出结果:aaa
console.log(s.repeat(3)); // 输出结果:aaa
// console.log(s.repeat(-3)); // 输出结果:报错
console.log(s.repeat("A")); // 输出结果:""

补齐字符串长度

padStart(),padEnd()

如果某个字符串不够指定长度,padStart()头部补齐字符串,padEnd()尾部补齐字符串

语法

  • 接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

案例

console.log("a".padStart(3, "efg")); // 输出结果:efa
console.log("a".padStart(4, "efg")); // 输出结果:efga
console.log("a".padEnd(3, "efg")); // 输出结果:aef
console.log("a".padEnd(4, "efg")); // 输出结果:aefg

字符串转换为数字

parseInt()

语法

parseInt(string, radix)
  • string:必需。要被解析的字符串。
  • radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

案例

  • 当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
parseInt("10");			  // 输出结果:10
parseInt("17",8);		  // 输出结果:15 (8+7)
parseInt("010");		  // 输出结果:10
  • 当参数 radix 的值以 “0x” 或 “0X” 开头,将以 16 为基数:
parseInt("0x10")      // 输出结果:16
  • 当参数 radix 的值小于 2 或者大于 36,则 parseInt() 将返回 NaN:
parseInt("50", 1)      // 输出结果:NaN
parseInt("50", 40)     // 输出结果:NaN
  • 只有字符串中的第一个数字会被返回,当遇到第一个不是数字的字符为止
parseInt("40 4years")   // 输出结果:40
  • 如果字符串的第一个字符不能被转换为数字,就会返回 NaN
parseInt("new100")     // 输出结果:NaN
  • 字符串开头和结尾的空格是允许的
parseInt("  60  ")    // 输出结果: 60

parseFloat()

  • parseFloat() 方法可解析一个字符串,并返回一个浮点数。
parseFloat("10.00")      // 输出结果:10.00
parseFloat("10.01")      // 输出结果:10.01
parseFloat("-10.01")     // 输出结果:-10.01
parseFloat("40.5 years") // 输出结果:40.5
  • 如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN
parseFloat("new40.5")    // 输出结果:NaN

到第一个不是数字的字符为止

parseInt("40 4years")   // 输出结果:40
  • 如果字符串的第一个字符不能被转换为数字,就会返回 NaN
parseInt("new100")     // 输出结果:NaN
  • 字符串开头和结尾的空格是允许的
parseInt("  60  ")    // 输出结果: 60

parseFloat()

  • parseFloat() 方法可解析一个字符串,并返回一个浮点数。
parseFloat("10.00")      // 输出结果:10.00
parseFloat("10.01")      // 输出结果:10.01
parseFloat("-10.01")     // 输出结果:-10.01
parseFloat("40.5 years") // 输出结果:40.5
  • 如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN
parseFloat("new40.5")    // 输出结果:NaN