String 全局对象是一个用于字符串或一个字符序列的构造函数.
String.prototype.at()
String.prototype.at(index): index接收一个正整数(可正可负),并返回一个新的String.
String.prototype.charAt()
String.prototype.charAt(index): index(0~length-1),默认值为0,返回一个指定字符.
String.prototype.charCodeAt()
String.prototype.charCodeAt(index): index(0~length-1),
返回值 :指定 index 处字符的 UTF-16 代码单元值的一个数字(0~65535);如果 index 超出范围,charCodeAt() 返回 NaN.
String.prototype.codePointAt()
String.prototype.codePointAt(pos):
pos(这个字符串中需要转码的元素的位置)
返回值: 是在字符串中的给定索引的编码单元体现的数字,如果在索引处没找到元素则返回 undefined 。
💎三者之间的区别:
charAt() 方法返回指定位置的字符, 后两者返回数值.
JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode码点大于0xFFFF的字符),JavaScript 会认为它们是两个字符, charCodeAt()方法只能分别返回前两个字节和后两个字节的值, odePointAt()方法,能够正确处理 4 个字节储存的字符,返回一个字符的码点.
var a = "?"
a.charCodeAt(0);//返回前两个字节的值 55362
a.charCodeAt(1);//返回后两个字节的值 57271
var a="?c"
a.charCodeAt(0);//返回了该字的十进制码点
a.charCodeAt(1);//返回后两个字节的值
a.charCodeAt(2);//返回c的由此可见
// 上面代码中,字符c在字符串a的正确位置序号应该是 1,但是必须向codePointAt方法传入 2.
// 解决办法: 使用for...of循环, 因为它会正确识别32位的UTF-16字符.
let a = '?c';
for (let ch of a) {
console.log(ch.codePointAt(0));
}
// codePointAt()方法返回的是码点的十进制值,如果想要十六进制的值,可以使用toString方法转换一下。
a.codePointAt(0).toString(16)
String.prototype.concat()
str.concat(str2, [, ...strN]): str2(需要连接到 str 的字符串).
将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
String.prototype.endsWith()
String.prototype.endsWith(searchString[,length]):
searchString(要搜索的子字符串).lenght(作为str的长度,默认为str.length);
返回值: 如果传入的子字符串在搜索字符串的末尾则返回true;否则将返回 false.
String.prototype.startsWith()
String.prototype.startsWith(searchString[,position]):
position(在str中搜索searchString的开始位置,默认为0)
返回值: 如果在字符串的开头找到了给定的字符,则返回true;否则返回false。
String.prototype.includes()
str.includes(searchString[, position])
返回值: 如果当前字符串包含被搜寻的字符串,就返回 true;否则返回 false.
注意: 区分大小写.
String.prototype.indexOf()
String.prototype.indexOf(searchValue[, fromIndex])
searchValue(要被查找的字符串值)
如果没有提供确切地字符串, searchValue会被强制设置为"undefined"
fromIndex(数字表示开始查找的位置)
返回值: 查找的字符串 searchValue 的第一次出现的索引,如果没有找到,则返回 -1
String.prototype.lastIndexOf()
String.prototype.lastIndexOf(searchValue[, fromIndex])
fromIndex(从str的第fromIndex 位开始向左回向查找.
fromIndex 默认值是 +Infinity;
如果fromIndex >= str.length,会搜索整个字符串;
fromIndex < 0,等同于 fromIndex=0)
返回值: 返回指定值最后一次出现的索引 (该索引仍是以从左至右 0 开始记数的),如果没找到则返回-1。
String.prototype.match()
str.match(regexp)
regexp: 一个正则表达式对象, 如果传入一个非正则表达式, 则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp.
返回值:
如果使用g标志, 返回与完整正则表达式匹配的所有结果,不会返回捕获组.
如果不使用g标志, 返回第一个完整匹配及其相关的捕获组.
附加属性:
groups: 一个命名捕获组对象,其键是捕获组名称,值是捕获组,如果未定义命名捕获组,则为 undefined。
index: 匹配的结果的开始位置.
input: 搜索的字符串.
String.prototype.matchAll()
String.matchAll(regexp)
RegExp必须是设置了全局模式g的形式,否则会抛出异常TypeError.
返回值: 一个迭代器.
String.protype.search()
str.search(regexp)
返回值:
如果匹配成功,则search()返回正则表达式在字符串中首次匹配项的索引.否则,返回-1.
String.fromCharCode()
String.fromCharCode(num1[,...[,numN]])
num1(一系列UTF-16代码单位的数字(介于0-65535之间))
返回值: 一个长度为N的字符串,由N个指定的UTF-16代码单元组成.
String.fromCodePoint()
返回值: 使用指定的 Unicode 编码位置创建的字符串。
String.prototype.padEnd()
str.padEnd(targetLength [, padString])
targetLength(当前字符串需要填充到的目标长度)
padString(填充字符串)
返回值: 在原字符串末尾填充指定的填充字符串直到达到目标长度.
String.prototype.padStart()
str.padStart(targetLength[, padString])
返回值: 在原字符串开头填充指定的填充字符串直到目标长度所形成的新字符串.
String.prototype.repeat()
str.repeat(count)
count(介于0~+Infinity之间的整数).
返回值: 包含指定字符串的指定数量副本的新字符串.
String.prototype.replace()
str.replace(regexp|substr, newSubStr|function)
regexp: 一个RegExp对象或字面量.
substr: 一个将被 newSubStr 替换的字符串.
newSubStr: 用于替换第一个参数在原字符串中的匹配部分的字符串.
function: 一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。
返回值: 一个部分或全部匹配由替代模式所取代的新的字符串。
String.prototype.replaceAll()
str.replaceAll(regexp|substr, newSubStr|function)
当使用一个 regex 时,必须设置全局(“ g”)标志, 否则,它将引发 TypeError:“必须使用全局 RegExp 调用 replaceAll”。
String.prototype.toLocaleLowerCase()
str.toLocaleLowerCase()
str.toLocaleLowerCase(locale)
str.toLocaleLowerCase([locale, locale, ...])
local:指明要转换成小写格式的特定语言区域。 如果以一个数组 Array 形式给出多个locales, 最合适的地区将被选出来应用.
返回值:根据任何特定于语言环境的映射规则将被调用字符串转换成小写格式的一个新字符串。
String.prototype.toLocaleUpperCase()
String.prototype.toLowerCase()
str.toLowerCase()
返回值: 一个新的字符串,表示转换为小写的调用字符串。
String.prototype.toUpperCase()
String.prototype.toString()
String.prototype.trim()
str.trim()
返回值: 一个代表调用字符串两端去掉空白的新字符串.
String.prototype.trimRight()
String.prototype.trimStart()
String.prototype.slice()
str.slice(beginIndex[, endIndex])
beginIndex(从该索引(以 0 为基数)处开始提取原字符串中的字符
负数可看作 beginIndex+length )
返回值: 返回一个从原字符串中提取出来的新字符串
String.prototype.split()
str.split([separator[, limit]])
返回值:返回源字符串以分隔符出现位置分隔而成的一个 Array
String.prototype.substring()
str.substring(indexStart[, indexEnd])
indexStart:需要截取的第一个字符的索引,该索引位置的字符作为返回的字符串的首字母。
返回值: 包含给定字符串的指定部分的新字符串。