使用现代JavaScript中使用字符串的完整指南

2021-04-13 19:57:59

本指南旨在介绍您需要了解的所有内容,用于在JavaScript中创建,操作和比较字符串。 沿途的部分希望教导你一些新的东西,并帮助你避免常见的错误。 在几乎所有情况下,您应该使用这些方法之一来创建一个新的字符串。 唯一的实际优势在于对象在字符串基元上有一个是您可以将其他属性附加到其中: 虽然很有用的情况很少。 在几乎所有情况下,您应该创建一个字符串原语。 您可以组合(或' concatenate')多个字符串来使用+符号创建新的字符串: 让名称="这真的是" +"一个非常" +"长弦" //#34;这真的是一个非常长的弦乐"

要通过添加到现有终点,请使用+ =: 重复()方法返回一个新字符串,其中包含原始字符串重复多次: 模板文字允许您使用更可读的语法将变量和文本与新字符串组合成一个新的字符串。 而不是双重或单引号,括在后滴答中的字符串。 然后,使用$ {variablename},字符串中的参考变量。 让Appicat ="爱" 让Tweet ="我" +意见+" JavaScript" //#34;我喜欢JavaScript" 当您知道您正在比较两个字符串基元时,可以使用==或===运算符: 如果要将原始的字符串与字符串的字符串进行比较,== ===表现不同。

使用==运算符时,将被强制到字符串中的非字符串。这意味着在比较值之前,JavaScript将尝试和制造字符串。

出于不敏感的比较,请勿将两个字符串转换为大写或小写,然后比较,因为这与某些角色不可靠。

让A ='résumé' ;让B ='简历' ; //不正确:返回'假' a.tolowercase()=== b.tolowercase()//正确:返回' 1' A.LocaleCompare(B,未定义,{:'口音'})

使用<和gt;操作员,JavaScript将比较&#39中的每个角色;词典秩序'

这意味着它们以字母比较了字母,按照它们出现在字典中的顺序:

这是因为JavaScript实际上使用了Unicode中的每个字符' s值,其中小写字母在大写字母之后。

与==运算符相比(但使用===时,JavaScript中的空字符串被视为错误

if(somestring){//字符串有一个值} else {//字符串是空的或未确定的} 您可以将空格添加到字符串的开始或结尾,直到它使用padstart()或padend()达到指定的长度: // pad the string"你好" 使用空格来制作// 8个字符长:"你好" .padstart(8)//#34; 你好" "你好" 。球衣(8)//"你好" 而不是空格,您可以通过将其作为第二个参数传递给另一个字符串返回目标字符串。 将重复该字符串,直到达到目标长度(字符串将被截断IFIT不适合所需的填充): 让歌曲=“你好,是我的你和#39;重新寻找?`song.split(" \ n")// ["你好," 是我'想起了吗?" ] 您还可以通过传递可选的第二个参数来限制您希望从拆分()中的项目数:

//只得到前两个单词"快速的棕色狐狸" .split("",2)//输出:["&#34 ;,#34;快速" ]

如果您需要将字符串旋转到一个字符数组,则拆分()方法对于由&#39表示的Unicode字符不起作用;代理对&#39 ;:

这些方法需要您希望从字符串中提取的第一个字符的索引。

//从第5个字符,//最多提取一个新字符串(但不包括!)第10个字符和#34;我是Groot!" .slice(5,10)//" groot" "我是groot!" .substring(5,10)//" groot"

如果终端值高于启动值,则Substring()将'正确的'通过交换它们,但slice()只会返回一个空字符串。

Substring()将负索引视为0.例如,.slice(-3)将返回字符串的最后3个字符。

您还可以将字符串视为数组,并直接访问它:

这些方法通常用于将字符串转换为上/小写,以检查它们是否相同。 以下方法将从相关零件中删除所有空格,选项卡,非打破空间和线路结束字符(例如\ n): " 修剪我" .trim()//"修剪" " 修剪我" .trimstart()//"修剪我" " 修剪我" .trimend()//" 修剪我" "带纽诺\ n" .trimend()//"带纽诺" Trimstart()和Trimend()在ES10中引入,现在是'首选' 根据该规范使用的方法。 " 修剪我" .trimleft()//#34;修剪ME" " 修剪我" .Trimright()//" 修剪我" 这将返回字符串中的搜索项的第一次出现的位置,或者如果找不到字符串,则为-1: 如果在目标字符串中找不到搜索项,则所有这些方法都将返回-1。

您可以使用上面的indexof()方法来检查字符串是否以搜索词为止或结尾。

如果你不要关心子字符串的特定位置,并且只关注它是否在目标字符串中,您可以使用包含():

要返回包含正则表达式的所有匹配的数组,请使用/ g(全局)修改器:

使用匹配()没有/ g修饰符将仅返回第一个匹配,以及一些附加属性(原始字符串中的结果索引以及任何命名捕获组)

如果您需要有关每种匹配的更多详细信息,请在原始字符串中包含其索引,您可以使用MatchAll。

此方法返回迭代器,因此您可以在结果中使用循环的一个......您必须使用匹配/ g /修饰符的正常表达式()

//查找输入中的所有大写字母,让输入="这是英格兰"让匹配= input.matchall(/ [az] / g)//将结果转换为阵列,使用//传播操作员[...匹配] //返回:// [// [" t& #34;,索引:0,组:未定义] // [" e"索引:8,组:未定义] //]

替换的第一个参数()是要查找和替换的文本,第二个是要替换它的文本。 将字符串传递为第一个参数仅替换术语的第一个实例: 如果要替换文本的所有实例,则可以通过与&#39的正则表达式。贪婪' 修饰符(/ g)作为Firstargument: