手机版

javascript正则表达式和字符串正则表达式和字符串(2)

时间:2021-09-30 来源:互联网 编辑:宝哥软件园 浏览:

在上一篇文章中,我们介绍了javascript正则表达式和string RegExp和String (I),本文将继续分享相关内容。

在我看来,在学习一门编程语言的过程中,字符串、数组和容器是非常重要的部分。为了提高编程效率,我通常会深入学习字符串、数组和容器,详细了解相关特性和对应的API。本文是学习javascript字符串的一个笔记,想和有需要的朋友分享一下。

思维导图

这里写图片描述

如何创建字符串?

String是javascript中的基本类型之一,它对应的类型是String,可以通过两种方式创建:

通过分配变量创建字符串的基本类型,并通过构造方法(字符串)创建字符串对象。

虽然两种方法创建的字符串的表达式不同,但在某些场景下,我们需要字符串,但我们不在乎它们是字符串的基本类型还是字符串对象。在这种场景下,字符串的判断会有一点变化。

请参考以下代码,进一步了解:

var s=' abcd1234DCBA//创建字符串的推荐方式是var s1=' abcd1234DCBAvar s2=新字符串;//通过构造方法创建字符串var s3=新字符串;console . log(s===S1);//true具有值类型的console.log特征(s===S2);//false基本类型和对象不相等console . log(S2===S3);//false不同的对象不等于console.log(类型为s);//stringconsole.log(类型为S2);//object//判断输入值是不是基本类型string函数是string(s){返回类型为s===' string'} console.log(是string(s));//true console . log(IsString(S2));//false//判断输入值是否为字符串(基本类型字符串对象形式)函数isString2(s) {return s!=null type of s . value of()===' string ';} console . log(IsString 2(s));//true console . log(IsString 2(S2));//true字符串的值不变属性。

在Javascript中,字符串是不可变的。不变性是指当你生成一个字符串,然后调用该字符串的API对该字符串进行操作时,该字符串的原始值不会改变,调用处理后的结果是一个新的字符串。请参考以下代码以进一步了解:

var s=新字符串(' ABC ');var r=s . touppercase();警报;//abc s本身是一个不会改变的警报;//ABC常用API-字符串拦截。

与其截取字符串,不如掌握以下三个API:

slice : string . slice(N2 N1)这是我们常用的从指定位置(N1)到指定位置(N2)的字符串;子字符串:字符串。Substring (N1,n2)这是我们通常使用的从指定位置(N1)到指定位置(N2)的字符串;Substr : String.substr(N1,N2)这是我们经常从指定位置(N1)截取的指定长度的字符串(N2);

请参考以下代码以进一步了解:

var s=' 0123456789var R1=s . substring(1);//123456789第二个参数默认为字符lengthvar r2=s.substring(1,5);//1234 var R3=s . substring(1);//123456789第二个参数默认为字符lengthvar r4=s.substring(1,5);//1234 var r5=s . substr(1);//123456789第二个参数默认为字符lengthvar r6=s.substr(2,5);//23456var r7=s.substr(2,100);//23456789第二个参数大于字符长度,不受影响。

通用API-字符串检索。

至于字符串检索,掌握以下三个API。字符串检索在其他编程语言中非常常见,indexOf和lastIndexOf在其他编程语言中非常常见,它们相对容易理解。搜索类似于indexOf,只是其输入参数不是检索到的字符串,而是正则表达式,其返回值是正则表达式第一个匹配项的索引。

请参考以下代码以进一步了解:

var s=' 0123abc401234console . log(s . indexof(' 23 '));//2 con sole . log(s . LastIndex of(' 23 '));//10 console . log(s . search(/[a-z]/g));//4搜索出现字符的起始位置经常被API-string代替。

JS一般调用replace方法替换字符串中的某些字符,它接收两个参数:*第一个参数用于描述要替换的子字符串,参数类型可以是字符串,也可以是正则表达式。这里需要注意的是,如果是字符串,则只替换原始字符串中第一个匹配的子字符串,如果是没有标识符‘g’的正则表达式,则替换时得到的结果是一样的。如果要替换所有匹配的子字符串,必须传入标识符为g *的正则表达式。第二个参数用于描述替换值。参数类型可以是字符串、函数或包含特殊序列的字符(RegExp的静态属性://'/'/1.n/$ $,等等。).

请参考以下代码以进一步了解:

代码一.基本匹配操作。

var s='猫,蝙蝠,sat,胖';var res=s.replace('at ',' NE ');console . log(RES);//CNE、bat、sat和fat仅替换第一个匹配项var res1=s.replace(/at/,' NE ');console . log(res1);//cNE、bat、sat、fat或仅替换第一个匹配项var res2=s.replace(/at/g,' NE ');console . log(res2);//cNE、bNE、sNE、fNE替换所有匹配的物料代码二。第二个参数是函数。

var s=' abnamecd//模拟HTML转义一致性var RES=S. replace (/[]/g),function (match,index,soustr){ switch(match){ case ' ' : return ' lt ';案例“”:返回“gt”;}});console . log(RES);//abltnamegtcd代码3。只有特殊的序列字符可以灵活替换。

//对于字符sou,用{} functionstrong (sou,key){ var re=new regexp(“(”key”)”、“g”)展开关键字key;return sou.replace(re,' { $ 1 } ');//$1第一个捕获组}console.log(strong(s,' at ');//c{at},b{at},s{at},f{at}//对于字符sou,用{}展开关键字key以实现函数strong2 (sou,key) {var re=new regexp (key,' g ');return sou.replace(re,{ $ } ');//$匹配字符串}console.log(strong2(s,' at ');//c{at},b{at},s{at},f{at}公共API-字符串分组。

在JS中,split方法用于对字符串进行分组,可以接收两个参数:*第一个参数表示一个分隔符,可以是字符串类型,也可以是RegExp对象。*第二个参数是可选的,指示接收组的数量,即返回的结果数组的大小。如果未指定此参数,将返回所有组。请参考以下代码,进一步了解:

var s='猫,蝙蝠,sat,胖';var res=s.split(',');console . log(RES);//[ 'cat ',' bat ',' sat ',' fat' ]var res2=s.split(/,/);console . log(res2);//[ 'cat ',' bat ',' sat ',' fat' ]var res3=s.split(/,/,2);console . log(res3);//[ 'cat ',' bat']只返回2组常用的API字符串匹配。

match()方法检索字符串stringObject来查找一个或多个匹配正则表达式的文本。这个方法的行为很大程度上取决于regexp是否有标志g。

如果regexp没有标志g,match()方法只能在stringObject中执行一次匹配。如果没有找到匹配的文本,Match()将返回null。否则,它将返回一个数组,其中包含找到的匹配文本的信息。数组的第0个元素保存匹配的文本,而其他元素保存与正则表达式的子表达式匹配的文本。除了这些常规数组元素之外,返回的数组还包含两个对象属性。index属性声明stringObject中匹配文本的起始字符的位置,input属性声明对stringObject的引用。

如果regexp有标志g,match()方法将执行全局搜索,并在stringObject中找到所有匹配的子字符串。如果没有找到匹配的子字符串,则返回null。如果找到一个或多个匹配的子字符串,将返回一个数组。但是,全局匹配返回的数组内容与前者大不相同。它的数组元素包含stringObject中所有匹配的子字符串,没有索引属性或输入属性。

注意:在全局检索模式下,match()不提供与子表达式匹配的文本的信息,也不声明每个匹配子字符串的位置。如果需要这些全局检索的信息,可以使用RegExp.exec()。

请参考以下代码以进一步了解:

var s='猫,蝙蝠,sat,胖';var reg=/[a-z](at)/;console . log(s . match(reg));//[ 'cat ',' at ',index: 0,input: 'cat,bat,sat,fat ']var RES=s . match(/[a-z](at)/g);console . log(RES);//[ 'cat ',' bat ',' sat ',' fat']常用API-字符串比较。

有两种比较方法,一种是大于或小于符号,另一种是localeCompare方法。请注意,方法返回一个数字,该数字的含义与其他编程语言类似,因此不做过多解释。建议使用localeCompare来比较字符串。请参考以下代码以进一步了解:

var s1=' abcvar s2=' bcdvar s3=新字符串(' ABC ');console . log(S1 S2);//true console . log(S1==S3);//true将s1与S3 . tostring()console . log(S1 . locale compare(S2))进行比较;//-1 s1小于S2 console . log(S1 . locale compare(S3));//0 s1等于s3。以上内容是本文中大家分享的javascript正则表达式和string RegExp和String (2)。希望大家喜欢。

版权声明:javascript正则表达式和字符串正则表达式和字符串(2)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。