Skip to content
本页目录

字符串方法

at

接收一个整数值,并返回一个新的String

语法:str.at(index)

index:字符串索引,当为负数时,从末端开始倒数

  • 如果没有提供index或者index不是一个数值,默认0
  • 如果找不到指定的索引,则返回undefined
javascript
let str = "sajefe fefery";
console.log(str.at(-1)); //y //当为负数时,从末端开始倒数
console.log(str.at())//s //没有提供index,默认0
console.log(str.at(45))//undefined  //找不到指定的索引,返回undefined
console.log(str.at(0)); //s
console.log(str.at(1)); //a
console.log(str.at({})); //s //index不是一个数值,默认0

charAt

从一个字符串中返回指定的字符

语法:str.charAt(index)

index:0~length-1

  • 如果没有提供index或者index不是一个数值,默认0
  • 如果index是一个数值但是超出范围,则返回一个空字符串
javascript
let str = "sajefe fefery";
console.log(str.charAt(-1)); // 空字符串
console.log(str.charAt())//s  //没有提供index,默认0
console.log(str.charAt(45))// 空字符串 //指定的index超出了该范围,返回一个空字符串
console.log(str.charAt(0)); //s
console.log(str.charAt(1)); //a
console.log(str.charAt({})); //s //index不是一个数值,默认0

charCodeAt

表示给定索引处的utf-16代码单元,返回0-65535之间的整数

语法:str.charCodeAt(index)

index:0~length-1

  • 如果没有提供index或者index不是一个数值,默认0
  • 如果index是一个数值但是超出范围,返回NaN
javascript
let str = "sajefe fefery";
console.log(str.charCodeAt(-1)); // NaN
console.log(str.charCodeAt()); //115  没有提供index,默认0
console.log(str.charCodeAt(45)); // NaN //index是一个数值但是超出范围,返回NaN
console.log(str.charCodeAt(0)); //115
console.log(str.charCodeAt(1)); //97

fromCharCode

返回由指定的UTF-16代码单元序列创建的字符串

语法:String.fromCharCode(num1[,...[,numN]])

javascript
let str = String.fromCharCode(97, 98, 99, 100);
console.log(str);//abcd

fromCharCode是String的静态方法,使用的时候String.fromCharCode(),而不是作为你创建String对象的方法

concat

将一个或多个字符串与原字符串连接合并,形成新字符串返回

语法:str.concat(str2,[,...strN])

javascript
let str = "djfaq23";
let str2 = "eH452";
let str3 = "hkhkgd";
let str4 = "Kekhgfwe";
console.log(str.concat(str2)); //djfaq23eH452
console.log(str.concat(str3, str4)); //djfaq23hkhkgdKekhgfwe

startsWith

判断当前字符串是否以另一个给定的字子串开头,返回true或false

语法:str.startsWith(searchString[,position])

position:searchString的开始位置,默认值为0

javascript
let str = "2685709100@qq.com";
console.log(str.startsWith("268")); //true //默认值为0
console.log(str.startsWith("709", 3)); //false
console.log(str.startsWith("5709", 3)); //true

endsWith

判断当前字符串是否以另一个给定的子字符串结尾的,返回true或false

语法:str.endsWith(searchString[,length])

length:作为str的长度,默认为str.length

javascript
let str = "2685709100@qq.com";
console.log(str.endsWith("268")); //false
console.log(str.endsWith("268", 3)); //true
console.log(str.endsWith("com")); //true
console.log(str.endsWith("m")); //true

includes

用于判断一个字符串是否包含在另一个字符串中,返回true或false

语法:str.includes(searchString[,position])

position:从当前字符串的哪个索引值开始搜寻子字符串,默认值为0

此方法区分大小写

javascript
let str = "agaGawge34242";
console.log(str.includes("aga")); //true
console.log(str.includes("aga", 2)); //false  //从索引2搜寻,所以false
console.log(str.includes("Gaw")); //true  
console.log(str.includes("gaw")); //false  //区分大小写

indexOf

给定一个子字符串,搜索整个调用字符串,并返回指定子字符串第一次出现的索引

语法:str.indexOf(searchString[,position])

position: 默认为0

  • position小于0时,也是默认0
  • position大于调用字符串的长度时,则不搜索
  • 如果没有找到,则返回-1

此方法区分大小写

javascript
let str = "agaGawge34242";
console.log(str.indexOf("aga")); //0
console.log(str.indexOf("aga", 2)); //-1
console.log(str.indexOf("Gaw")); //3
console.log(str.indexOf("gaw")); //-1

lastIndexOf

返回调用String对象的指定值最后一次出现的索引,在一个字符串中的指定位置fromIndex处从后往前搜索

语法:str.lastIndexOf(searchValue[,fromIndex])

  • 如果fromIndex大于str.length,则搜索整个字符串,从后到前
  • 如果fromIndex小于0,则从0开始往前搜索
  • 如果没有找到,则返回-1
javascript
let str = "dbcdd";
let str2 = str.lastIndexOf("d", 9);
let str3 = str.lastIndexOf("d", -1);
let str4 = str.lastIndexOf("d");
let str5 = str.lastIndexOf(2);
let str6 = str.lastIndexOf("d", 3);
console.log(str2); //4
console.log(str3); //0
console.log(str4); //4
console.log(str5); //-1
console.log(str6); //3

match

返回一个字符串匹配正则表达式的结果

语法:str.match(regexp)

regexp:一个正则表达式对象

  • 如果参数是非正则表达式对象,会隐式使用new RegExp(obj)将其转换为一个RegExp
  • 如果没给出参数,将得到一个包含空字符串的Array:[""]
  • 如果使用g,返回与完整正则表达式匹配的所有结果,但不会返回捕获组groups
  • 如果不使用g,则返回第一个完整匹配及相关的捕获组,在这种情况下,返回的项目有其他属性: groups 一个命名捕获组对象,其键是捕获组名称,值是捕获组,如果未定义命名捕获组,则为undefined index 匹配的结果的开始位置 input 搜索的字符串
javascript
let str = "agAGawge34242";
let res = str.match(/a/);
let res2 = str.match(/a/g);
let res3 = str.match(/a/gi);
let res4 = str.match(/(?<customName>a)/);
console.log(res); //['a'] 携带属性: {index: 0, input: 'agAGawge34242', groups: undefined}
console.log(res2); //["a", "a"]
console.log(res2.index); //undefined
console.log(res3); //['a', 'A', 'a']
console.log(res4);
/* ["a","a"] 携带属性: {groups: {customName: 'a'},index:0,input: "agAGawge34242"} */

matchAll

返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器

语法:str.matchAll(regexp)

regexp:正则表达式对象

javascript
let str = "test1test2";
let reg = /t(e)(st(\d?))/g;
let arr = [...str.matchAll(reg)];
console.log(arr[0]); //['test1', 'e', 'st1', '1']
console.log(arr[1]); //["test2", "e", "st2", "2"]

padStart

用另一个字符串填充当前字符串,从当前字符串左侧开始填充

语法:str.padStart(targetLength[,padString])

  • targetLength小于字符串长度,则返回字符串本身
  • 第二个参数如果没传,则补空字符串

多余长度会被截掉,少的会重复多次

javascript
let str = "khaefr";
let str2 = str.padStart(10, "a");
let str3 = str.padStart(2, "a");
let str4 = str.padStart(10, "afegaewgawegwae");
let str5 = str.padStart(10);
console.log(str2); //aaaakhaefr
console.log(str3); //khaefr
console.log(str4); //afegkhaefr
console.log(str5); //    khaefr  (前面有空字符串)

padEnd

用另一个字符串填充当前字符串,返回填充后达到指定长度的字符串

语法:str.padEnd(targetLength[,padString])

  • targetLength小于字符串长度,则返回字符串本身
  • 第二个参数如果没传,则补空字符串

多余长度会被截掉,少的会重复多次

javascript
let str = "khaefr";
let str2 = str.padEnd(10, "a");
let str3 = str.padEnd(2, "a");
let str4 = str.padEnd(10, "afegaewgawegwae");
let str5 = str.padEnd(10);
console.log(str2); //khaefraaaa
console.log(str3); //khaefr
console.log(str4); //khaefrafeg
console.log(str5); //khaefr       (后面有空字符串)

repeat

构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本

语法:str.repeat(count)

count必须大于等于0,小于0会报错

javascript
let str = "khaefr";
let str2 = str.repeat(0);
let str3 = str.repeat(1);
let str4 = str.repeat(2);

console.log(str2); //""
console.log(str3); //khaefr
console.log(str4); //khaefrkhaefr

substring

返回一个字符串在开始索引到结束索引的一个子集

语法:str.substring(indexStart[,indexEnd])

  • 如果indexStart和indexEnd相等,返回空字符串
  • 如果indexEnd省略,则一直到字符串末尾
  • 如果参数小于0或为NaN,则被当作0
  • 如果任一参数大于str.length,则被当作str.length
  • 如果indexStart大于indexEnd,则执行效果跟参数调换的一样
javascript
let str = "abcde";
let str2 = str.substring(0);
let str3 = str.substring(0, 3);
let str4 = str.substring(0, -1);
let str5 = str.substring({}, -1);
let str6 = str.substring(9, -1);

console.log(str2); //abcde
console.log(str3); //abc
console.log(str4); //""
console.log(str5); //""
console.log(str6); //abcde

split

用指定分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置

语法:str.split([separator[,limit]])

  • 如果分隔符没找到或者省略,返回长度为1的数组,内容是整个字符串
  • 如果分隔符是空字符串,str就会拆分成字符数组
  • 如果limit为负数,相当没限制
javascript
let str = "abcde";
let str2 = str.split("");
let str3 = str.split("", 1);
let str4 = str.split("", 0);
let str5 = str.split("", -1);
let str6 = str.split("+");
let str7 = str.split();
console.log(str2); //['a', 'b', 'c', 'd', 'e']
console.log(str3); //['a']
console.log(str4); //[]
console.log(str5); //['a', 'b', 'c', 'd', 'e']
console.log(str6); //["abcde"]
console.log(str7); //["abcde"]
javascript
//案例:字符串的逆转
let str = "abcde";
let str2 = str.split("").reverse().join("");
console.log(str2);//edcba

replaceAll

返回一个新字符串,新字符串所有满足pattern(是一个字符串或一个RegExp)的部分都会被replacement(是一个字符串或一个在每次匹配被调用的函数)替换

语法:str.replaceAll(regexp|substr,newSubstr|function)

当使用regexp,必须设置全局g标志,否则引发TypeError

javascript
let str = "I love music,I love read.";
let str2 = str.replaceAll('I', "you");
let str3 = str.replaceAll(/love/g, "like");
console.log(str2) //you love music,you love read.
console.log(str3) //I like music,I like read.

返回正则表达式在字符串中首次匹配项的索引

语法:str.search(regexp)

regexp:一个正则表达式对象

  • 如果传入一个非正则表达式regexp,则会使用new RegExp(regexp)隐式将其转换为正则表达式对象
  • 如果没找到,返回-1
javascript
let str = "I love music,I love read.";
let index = str.search("I");
console.log(index);//0
const reg = new RegExp("I");
console.log(reg)///I/

slice

提取某个字符串的一部分,并返回一个新的字符串,且不改变原字符串

语法:str.slice(beginIndex[,endIndex])

beginIndex:从该索引开始提取源字符串中的字符,如果值为负数,则加上str.length看待

endIndex:可选,在该索引处结束提取字符串,如果省略,会提取到字符串末尾,如果为负数,则加上str.length

  • 如果两个参数都没传,返回全部
  • 如果第二个参数没传,提取到末尾
  • 如果第二个参数比第一个参数要小或者相等,则返回空字符串
javascript
let str = "abcde";
console.log(str.slice()); //abcde
console.log(str.slice(0)); //abcde
console.log(str.slice(-2)); //de
console.log(str.slice(1)); //bcde
console.log(str.slice(0, 3)); //abc
console.log(str.slice(0, -3)); //ab
console.log(str.slice(0, 32)); //abcde
console.log(str.slice(-8, -2)); //abc
console.log(str.slice(-2, -8)); //    (空字符串)

toLowerCase

字符串值转为小写

语法:str.tolowerCase()

javascript
let str = "AbcDe";
console.log(str.toLowerCase()); //abcde

toUpperCase

字符串值转换为大写

语法:str.toUpperCase()

javascript
let str = "AbcDe";
console.log(str.toUpperCase()); //ABCDE

toLocaleLowerCase

根据任何指定区域语言环境和值的大小写映射,转换为小写

语法:str.toLocaleLowerCase()str.toLocaleLowerCase(locale)str.toLocaleLowerCase([locale,locale,...])

locale: 指明要转换成小写格式的特定语言区域,如果以一个数组的形式给出多个locales,最合适的地区将被选出来应用 默认的locale是主机环境的当前区域设置

javascript
let str = "AbcDeI";

console.log(str.toLocaleLowerCase()); //abcdei
console.log(str.toLocaleLowerCase('en-US')); //abcdei
console.log(str.toLocaleLowerCase('TR')); //abcdeı

toLocaleUpperCase

根据本地主机语言环境把字符串转换为大写格式,并返回转换后的字符串

语法:str.toLocalUpperCase()str.toLocalUpperCase(locale)str.toLocalUpperCase([locale,locale,...])

javascript
let str = "AbcDei";

console.log(str.toLocaleUpperCase()); //ABCDEI
console.log(str.toLocaleUpperCase("en-US")); //ABCDEI
console.log(str.toLocaleUpperCase("TR")); //ABCDEİ

toString

字符串对象的toString()方法返回一个字符串,返回一个指定的字符串

语法:stringObj.toString()

javascript
let str= new String('cywhwe');
console.log(str.toString())   //"cywhwe"

trim

从字符串两端删除空白字符

语法:str.trim()

javascript
let str= '   fndf  fdf   '
console.log(str.trim())  //"fndf  fdf"

trimEnd

从字符串末尾删除空白字符

语法:str.trimEnd()

javascript
let str= '   fndf  fdf   '
console.log(str.trimEnd())  //"   fndf  fdf"

trimStart

从字符串开头删除空白字符

语法:str.trimStart()

javascript
let str= '   fndf  fdf   '
console.log(str.trimStart())  //"fndf  fdf   "

valueOf

返回String对象的原始值

语法: str.valueOf()

javascript
let str= new String('erewr')

console.log(str)  //String {'erewr'}
console.log(str.valueOf())  //erewr