字符串小知识

随声附和 提交于 2019-12-05 12:52:11

  最近一段时间比较急躁,花了大量的时间在看书和看视频上,本想能够快速的了解JS中的有关知识并扩展自己的认识, 少有时间来这里整理和记录了,后来发现知识点看了就忘,还是得多多练习才能把知识内化掉。

一、字符串及有关知识

1、字符串和数组相关性比较大,先说说数组吧。

(1)数组的命名方式有多种,如下:

var arr=new Arrray();

var arr=new Array(3);

var arr=new Array('3');

var arr=[ ];

var arr=[1,2,3];

注意第二个和第三个的区别。

(2)toLocalString(),toString(),valueOf()

所有对象都有以上三种方法,看以下案例区别(来源高程P89):

alert(arr.toString()); (toString()返回的是一个用逗号拼接的字符串)

alert(arr.valueOf);(valueOf返回的还是数组)

alert(arr); (因alert()要接受字符串参数,后台会默认调用toString()方法)

(3)数组中常用的一些方法:

arr.join('-'),用-将arr的各项连成一条字符串,如果直接写join()则会默认以逗号连接arr的各项,感觉和toString()方法一样;

arr.push(value),将value添加到arr的末尾,value可多个,用逗号隔开,其返回值为添加value后的arr;

arr.unshift(value)是将value添加到arr的第一个位置,用法和push一样;

arr.pop(),将arr的最后一项值删除,返回值为该删除项;

arr.shift(),用法和pop()一样,但是是将arr的首项删除;

arr.reverse(),可将arr中的各项顺序颠倒,返回值为颠倒后的arr;

arr.sort(),默认情况下,该方法按升序排列数组项,为实现排列,该方法回调用每个数组项的toString()转型方法,然后比较得到字符串,即使数组中的每项都是数值,sort()方法比较的也是字符串,见P92,但是sort()可接收一个比较函数,函数写在括号内;

arr1.concat(arr2),将arr2添加到arr1后面组成一个新的数组,它的返回值就是这个新的数组;

arr.slice(1,4),截取数组,其返回值为起始到结束位置之间的项,但不包括最后一项,负数的话加上总长度再计量;

arr.splice(起始位置,删除的项,要插入的任意数量的项),可实现删除、插入和替换,其返回值为删除的项;

arr.indexOf(要查找的项,查找起点位置)和arr.lastIndexOf(要查找的项,查找起点位置),一个是从前往后查找,一个是从后往前查找,返回的是项的位置,查找不到则为-1;

arr.reduce(函数,初始值),arr.reduceRight(函数,初始值);

(4)字符串的一些方法:

string.charAt(字符位置),返回该位置下的字符;

string.charCodeAt(字符位置),返回该位置下字符的字符编码;

string.concat(),和数组用法一样;

string.split(''),以split传参的字符来分割字符串为数组,参数为必填的,如果不填则还是为string;

slice(),substr(),substring()用法基本上和数组中的slice()一样,它们的区别体现在参数为负数的时候;

indexOf()和lastIndexOf()和数组中的用法一样;

string.toLowerCase(),string.toUpperCase(),转换字符串的大小写,返回值为转换后的字符串

(5)正则表达式

正则的创建方式:

var re=/a/;或者var re=new RegExp('a');

正则中常应用的几种方法如下(直接写写法):

/re/.test(string);判断string中是否有正则表达式,如果有则返回true,如果没有则返回false;

string.search(re);以正则表达式去匹配字符串,如果匹配成功,则返回匹配成功的位置(以首字母位置确定),如果匹配失败则返回-1;

string.match(re);以正则表达式去匹配字符串,如果匹配成功,则返回匹配成功的数组,可能有多个;

string.replace(re,新字符串/回调函数);以正则表达式去匹配字符串,如果匹配成功,则匹配成功的项替换成新的字符串;

正则默认条件下是区分大小写和一旦匹配成功就会结束匹配的两条原则,若想更改默认条件则应如下:

var re=/a/i 或 var re=new RegExp('a','i'),实现不区分大小写;

var re=/a/g 或 如上将i改为g即可,实现全局匹配;

正则中[ ]括号中的整体代表一个字符(这个要特别注意),[^a] 代表非a, [a-z]代表a-z的任一个字符, [abc]代表abc中任一个;

正则中的转义字符:

\s 代表空格,\d代表数字, \w代表字符(字母、数字、下划线)

\S代表非空格, \D代表非数字, \W代表非字符;

正则中的量词(出现的次数):

{n,m}代表至少出现n次最多出现m次,{n,}代表至少出现n次,*代表出现任意次即{0,},?代表0次或1次即{0,1},+代表出现1次或任意次{1,},{n}代表出现正好n次;

^不在[ ]里面时表示开始,$表示结束;

正则中的一个难点是replace中的回调函数理解,可多看视频;


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!