JavaScript字符串及基本常用方法
1.字符串简介
字符串是一组由16位值组成的不可变的有序序列;通常`由双引号或单引号包括起来,例:
var str = "hello world"; //定义一个字符串;
注意:当一个字符串需要有引用字符出现时,字符串如果使用双引号,那么引用文字用单引号;同理,反过来也可以. 如下所示:
var str = "I like that 'book'";
//或是
var str = 'I like that "book"';
然而,在一部分情况下,如果你一定要使用双引号或是单引号,需要使用转译字符,常用转义字符如下:
转义字符 | 含义 |
---|---|
\n | 换行符 |
\t | 制表符 |
\‘ | 单引号 |
\“ | 双引号 |
\双斜杠 | 反斜杠 |
\r | 回车符 |
\f | 换页符 |
例如要使用,双引号在var str = “I like that ‘book’”,可以这样写:
var str = "I like that \"book\"";
//输出结果为 "I like that "book""
2.字符串定义方法
在最初我们使用了var str = “hello world”;
这种形式定义了一个字符串;而在这,我们还有另一种定义方法,就是使用构造函数String();代码如下:
var str = new String("hello world"); //构造函数法
//输出结果 “hello world”
而在这里我们需要注意尽管两种方式创建的字符串显示完全一样,但是他们不全等,解释如下:
var a = new String('hello world'); //构造函数
var b = "hello world";
a === b; //=>false,结果返回false
这是因为,使用字面量方法创建的字符串的数据类型是String,而使用构造函数方法创建的字符串是一个对象(object); 所以他们的类型不相等,返回结果false; 可以使用 typeof 检查 a,b的数据类型;
console.log(typeof a);
//检查a字符串的数据类型;返回string
console.log(typeof b);
//检查b字符串的数据类型;返回object
3.字符串的方法
字符串与数组很像,在底层字符串是以字符数组的形式保存的;因此,由此可以知道,字符串的第一个属性是length(字符串长度);
3.1 length使用方法
var s = "hello world"; //定义一个字符串
s.length;
//直接使用.来调用length方法,返回字符串长度11,空格也算
3.2 charAt()方法
charAt()可以返回指定索引位置的字符;
使用方法:在charAt()中,传入索引值;例如:charAt(0);
具体实例:
var s = “hello world”; //定义字符串s
s.charAt(0); // => "h" . 此处索引的位置是零,所以是字符串的第一个字母h
注意⚠️,博主亲自测试后,如果在方法里传入字符串中不存在的索引位置(包括负数)会返回空字符串;
var s = “hello world”; //定义字符串s
s.charAt(-1); // => ""
3.3 charCodeAt()方法
charCodeAt()是用于返回指定索引位置的Unicode值;
var s = "hello world";//定义字符串
s.charCodeAt(0);// =>104; 因为0索引位置的字母是h,而h的unicode是104,所以返回值是104;
注意⚠️,博主亲自测试后,如果在方法里传入字符串中不存在的索引位置(包括负数)会返回NaN;
3.4 fromCharCodeAt()方法
将Unicode转换为字符串;这个方法有点像charCodeAt的反向方法。但是这里调用这个方法注意使用String来调用。具体如下:
var s = "hello world";//定义字符串
String.fromCharCode(104); //=>h; 因为要查的unicode码是104,104就是h
3.5 indexOf()方法
该方法用于检索字符串中是否含有指定字符,如果字符串中存在指定字符,将返回该字符出现的第一个位置的索引值;如果没有指定字符被检索到,结果将会返回 - 1;
具体实例如下:
var s = "hello world"; // 定义一个字符串
s.indexOf('l'); //检索s字符串中是有有字母l;此处返回2,因为是hello里的第一个l,索引位置为2;
s.indexOf('g'); //检索s字符串中是有有字母g;此处返回-1,因为hello world里没有g;
同时,该方法可以指定第二个参数,来指定开始查找的位置。例如
var s = "hello world"; // 定义一个字符串
s.indexOf('l',3); //检索s字符串中是有有字母l;此处返回3,因为从hello里的第二个l开始查找;
3.6 laseIndexOf()方法
该方法和indexOf()方法一样,不同的是indexOf是从前往后找,而此方法是从后往前找。laseIndexOf()也可以指定第二个参数;
var s = "hello world";// 定义一个字符串
s.lastIndexOf('l'); //返回值9,此处的l索引位置是9,是world中的l;
s.lastIndexOf('l',6); //返回值3,此处的l索引位置为3,是hello里的第二个l;
3.7 concat()方法
该方法用来连接一个或多个字符串。作用和+号一样,不会影响原字符串;
var a = "hello, ";
var b = "world";
a.concat(b); //=>"hello, world" 两个字符串会拼串。
a+b; //=>"hello, world" 两个字符串会拼串,与concat的作用一样;
console.log(a); //=>"hello, "; 不会对原字符串产生影响;
//验证两种拼串方法结果是否完全相等;
var c = a+b;
var d = a.concat(b);
c==d; // 返回true;
c===d; //返回true;
3.8 slice()方法
该方法可以从字符串中截取出指定的内容;同时这个方法也不会影响原字符串,而是将截取的内容返回。
该方法有两个参数:
第一个参数:开始位置的索引,包括开始位置;
第二个参数:结束位置的索引,不包括结束位置;
注意:如果省略第二个参数就会截取到从开始位置到最后的所有字符;
- 也可以传递一个负数作为参数,负数就会从后边开始计算
var s = "abcdefghijklmn";
s.slice(0,3); //返回abc;因为从0的位置开始,3的位置结束,也就是abc
s.slice(4); // 返回"efghijklmn",从第一个索引位置开始,也就是e,由于没有第二个参
数,所以会截取到最后所有的字符;
s.slice(-1); //返回n,应为从最后开始计算,最后一位
s.slice(2,-3); //返回“cdefghijk”;后边的三位不要,前面从索引第二位也就是c开始截取
3.9 split()方法
该方法将字符串拆分为一个数组;不会影响原数组;返回值存入数组;
参数:需要一个字符串作为参数,将会根据该字符去拆分数组;
如果传递一个空串作为参数,则会将每个字符都拆分为数组中的一个元素;
var s = "abcdefghijklmn"; //定义一个字符串
s.split("");//返回["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"]
s.split("e"); //返回["abcd", "fghijklmn"];以e为拆分点;
3.10 subString()方法
该方法可以截取一个字符串,和slice()类似;
可以传递两个参数:
第一个参数,表示开始截取位置的索引(包括开始位置);
第二个参数,表示结束位置的索引(不包括结束位置);
不同的是这个方法不能接受负值作为参数:如果使用负数作为参数,则默认使用0;
而且它还会自动去调整参数的位置,如果第二个参数小与第一个参数,则自动交换;
var s = "abcdefghijklmn";//定义一个字符串
s.subString(0,1); //返回a;从第0个索引开始,1结束(不包含结束位置)所以是a
s.substring(2,0); //返回ab;第二个参数小于第一个,自动调整位置,0开始,2结束;
s.substring(-30); //返回全部;因为负数做参数,默认索引值为0;
s.substring(30); //返回空串;找不到索引位置
3.11 substr()方法
该方法用来截取一个字符串;不会影响原数组;
有两个参数:
第一个参数是截取位置的索引;
第二个参数姐截取位置的长度;
- 如果不传入任何参数,将截取字符串全部内容;
- 如果只传入一个参数,将会从开始索引位置截取到最后;
- 如果传入负数,默认索引从0开始;
- 如果索引不存在,超出字符串的长度,将返回空串;
var s = "abcdefghijklmn";//定义一个字符串
s.substr(2,5); //返回"cdefg"; 从第2索引开始,截取5个
s.substr(); //返回 "abcdefghijklmn";不传入任何参数,将截取字符串全部内容;
s.substr(-30);//返回"abcdefghijklmn";因为负数做参数,默认索引值为0
s.substr(30); //返回空串;找不到索引位置
3.12 toUpperCase()方法
将字符串转化为大写
var s="abcde";
s.toUpperCase(); // 返回“ABCDE”
3.13 toLowerCase()方法
将字符串转化为小写
var s="ABCDE";
s.toLowerCase(); // 返回“abcde”