字符串的介绍
1.字符串(String)
对象是JavaScript
原生三大包装对象之一,用来生成字符串对象。
包装对象指的是数据类型为Number、String和Boolean的值对应的原生对象;
三大包装对象能力在于:
a.能够将上述基本类型值包装成真正的对象,从而体现JavaScript语言一切皆对象的特点;
b.是字面量使用对应包装对象的方法的内在原理;
c.是进行数据类型转换的利器;
2.标志: 引号 " " ' '
3.字符串的创建:
var s1 = 'abc'; //字面量方式创建 var s2 = new String('abc'); //构造函数方式创建 typeof s1 // "string" //字面量创建的类型为Srting typeof s2 // "object" //构造函数返回的类型为对象
4.字符串的索引与长度
字符串对象类似于数组,也拥有索引值
new String('abc') // String {0: "a", 1: "b", 2: "c", length: 3} (new String('abc'))[1] // "b"
5.遍历:
上面代码中,字符串abc对应的字符串对象,有数值键(0、1、2)和length属性,所以可以像数组那样取值。
循环遍历,for-in (四种遍历方式)
var str = "这是 一个字符串!"; for(i in str){ console.log(str[i]); }
// 这是 一个字符串!
字符串的一些方法
1.str.indexOf(value,a);
功能:检测字符是否存在,存在返回索引值,查不到返回-1;
参数: value:需要查找的字符
a:开始查找的起始位置(默认为0,重头查找)
(可以用这个方法实现字符串去重)
1 // 字符去重 2 function norepeatString(str) { 3 var temp = new String(); 4 for(i in str){ 5 if(temp.indexOf(str[i])==-1){ //检测temp中是否存在原数组中的字符,有则略过,没有则写入 6 temp += str[i]; //拼接字符串 7 } 8 } 9 return temp; 10 }
2.str.charAt();
功能:根据索引查字符
返回值:返回指定位置的字符,参数是从0开始编号的位置
需要注意的是,如果参数为负数,或者大于等于字符串的长度,charAt返回 空字符串。
var str = "hello,world"; console.log(str.charAt(1)); // e
这个方法我们可以使用数组下标来代替。
var str = "hello,world"; console.log(str[1]);//e
3.str.slice(a,b);
截取 从a开始到b-1结束;
slice()
方法提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串。
'JavaScript'.slice(0, 4) // "Java"
如果省略第二个参数,则表示子字符串一直到原字符串结束。
'JavaScript'.slice(4) // "Script"
如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度。
'JavaScript'.slice(-6) // "Script" 'JavaScript'.slice(0, -6) // "Java" 'JavaScript'.slice(-2, -1) // "p"
如果第一个参数大于第二个参数,slice方法返回一个空字符串。
'JavaScript'.slice(2, 1) // ""
4.str.substr(a,b);
截取 从a开始截取b个;
5.str.substring(a,b);
截取 从a开始到b-1结束;
substring方法用于从原字符串取出子字符串并返回,不改变原字符串,跟slice方法很相像。
它的第一个参数表示子字符串的开始位置,
第二个位置表示结束位置(返回结果不含该位置)。
'JavaScript'.substring(0, 4) // "Java"
//如果省略第二个参数,则表示子字符串一直到原字符串的结束。 'JavaScript'.substring(4) // "Script"
//如果第一个参数大于第二个参数,substring方法会自动更换两个参数的位置。 'JavaScript'.substring(10, 4) // "Script" // 等同于 'JavaScript'.substring(4, 10) // "Script"
上面代码中,调换substring方法的两个参数,都得到同样的结果。
//如果参数是负数,substring方法会自动将负数转为0。 'JavaScript'.substring(-3) // "JavaScript" 'JavaScript'.substring(4, -3) // "Java"
上面代码中,第二个例子的参数-3会自动变成0,等同于'JavaScript'.substring(4, 0)。由于第二个参数小于第一个参数,会自动互换位置,所以返回Java。
由于这些规则违反直觉,因此不建议使用substring方法,应该优先使用slice。
6.str.split("");
分割成数组
//不传参:将字符串变成数组 "hello".split() = ["hello"] //传空字符:每一个分割; "hello".split("") = ["h","e","l","l","o"] //传指定字符:以指定字符分割 "2019-08-13".split("-") = ["2019","08","13"]
split方法还可以接受第二个参数,限定返回数组的最大成员数。
'a|b|c'.split('|', 0) // [] 'a|b|c'.split('|', 1) // ["a"] 'a|b|c'.split('|', 2) // ["a", "b"] 'a|b|c'.split('|', 3) // ["a", "b", "c"] 'a|b|c'.split('|', 4) // ["a", "b", "c"]
7.str.replace(a,b);
替换,将a替换为b,只能替换一个;
var str = "aabc".replace("a","b"); console.log(str); //babc