字符串属性
字符串长度(length)
字符串的内置属性length用来计算字符串的长度(字符个数)
var txt = "abcdefg";
txt.length //7
字符串中如果存在空格,一个空格会被计算一个长度。当字符串为中文时,一个字也被计算为一个长度
var txt = 'ab cdefg';
var txx = 'ab cdefg';
txt.length; //8
txx.length; //9
txt = '你好啊'
txt.length; //3
字符串方法
-
charAt()&charCodeAt()
作用:返回指定索引位置的字符&&Unicode 值
使用方法:字符串调用并传入一个索引值。
区别:前者(string类型):不传入索引值,则默认返回第0个字符。如果传入的索引超出字符串长度-1,则返回""(一个空字符串)
后者(number类型):不传入索引值,则默认返回第0个字符的 Unicode 值。如果传入的索引超出字符串长度-1,则返回NaN
var txt = 'abcdefg';
txt.charAt(3);//"d"
txt.charAt();//"a"
txt.charAt(999);//""
txt.charCodeAt(3);//100
txt.charCodeAt();//97
txt.charCodeAt(999);//NaN
-
concat()
作用:拼接字符串,返回一个新的字符串且不会改原有的字符串(string类型)
使用方法:字符串调用并传入一个或多个字符串(多个之间用逗号隔开)。如果传入的参数不是string类型,则默认先转换为string类型再进行拼接。
性能:经过资料查阅,强烈建议使用赋值操作符(+, +=)代替 concat()来拼接字符串
var txt = 'abc';
txt.concat('de');//"abcde"
txt.concat('de','fg');//"abcdefg"
txt.concat(123);//"abc123"
txt.concat({});//"abc[object Object]"
txt.concat([]);//"abc"
txt.concat(null);//"abcnull"
txt.concat(true);//"abctrue"
-
indexOf()&lastIndexOf()
作用:返回字符串中检索指定字符第一次出现的索引&&最后一次出现索引(如果没有找到,则返回 -1)
使用方法:字符串调用并传入一个字符串
区别:前者:当不传入参数时,默认参数为undefined。当传入空字符串时,返回0。
后者:当不传入参数时,默认参数为undefined。当传入空字符串时,返回字符串长度
var txt = "abcabc";
txt.indexOf('bc');//1
txt.indexOf('');//0
txt.indexOf();//-1
txt.lastIndexOf('bc');//4
txt.lastIndexOf('');//6
txt.lastIndexOf();//-1
二者均可传入第二个参数,第二个参数表示的是检索的起始位置,可以是任意整数。如果该整数小于0或者大于字符串长度,那么会从0或者字符串长度大小处开始检索
var txt = "abcabc";
txt.indexOf('bc',2);//4
txt.indexOf('bc',-2);//1
txt.indexOf('bc',99);//-1
txt.indexOf('',2);//2
txt.indexOf(,2);//报错
txt.lastIndexOf('bc',2);//1
txt.lastIndexOf('bc',-2);//-1
txt.lastIndexOf('bc',99);//4
txt.lastIndexOf('',2);//2
txt.lastIndexOf(,2);//报错
-
match()
作用:找到一个或多个正则表达式的匹配,返回一个数组
使用方法:字符串调用,并传入一个正则表达式,返回一个匹配的包含字符串的数组(加上g的话表示全文匹配)如果传入的不是正则表达式,则会隐式转换为正则表达式再进行匹配。当不传入任何参数时,返回一个包含空字符串的数组。
var txt = "abcabcabc";
txt.match('ab');//Array["ab"]
txt.match(/ab/);//Array["ab"]
txt.match(/ab/g);//Array["ab","ab","ab"]
txt.match();//Array[""]
-
replace()
作用:替换与正则表达式匹配的字符,返回一个新的字符串,不会改变与原来的字符串
使用方法:字符串调用,并传入两个参数,第一个时匹配字符串或者正则表达式,第二个参数是用来替换的值。默认只替换第一个匹配到的字符,如果正则加上全局匹配,那么将所用匹配到的值进行替换。
var txt = "abccbabc";
txt.replace('b','y');//'ayccbabc'
txt.replace(/b/,'y');//'ayccbabc'
txt.replace(/b/g,'y');//'ayccyayc'
-
search()
作用:检索与正则表达式相匹配的值,返回一个索引值
使用方法:字符串调用,传入一个正则表达式或者其他类型的参数,其他类型的参数会隐式转换后在进行检索。返回的是第一个匹配的字符索引值,若没有匹配到则返回-1。如果不传入参数返回0。
var txt = "abccbabc";
txt.search('b');//1
txt.search(/b/);//1
txt.search();//0
-
split()
作用:将字符串转换为数组
使用方法:字符串调用,传入一个分隔符(字符串或正则表达式),如果字符串中找不到分隔符,则返回一个包含整个字符串的数组。如果分隔符为空字符串,则将字符串中每个字符拆分,以数组形式返回。如果不传入分隔符,则返回一个包含整个字符串的数组。该方法还可以传入第二个参数,表示分隔的片段个数限制。如果分隔的片段没有达到限制,不会在数组后边补充空字符串
var txt = "abcabcabc";
txt.split('e');//Array [ "abcabcabc" ]
txt.split('');//Array(9) [ "a", "b", "c", "a", "b", "c", "a", "b", "c" ]
txt.split();//Array [ "abcabcabc" ]
txt.split('b',2);//Array [ "a", "ca" ]
txt.split('b',9);//Array(4) [ "a", "ca", "ca", "c" ]
-
slice()
作用:提取字符串的一部分,返回一个新的字符串,不会改变原字符串
使用方法:字符串调用,可传入两个整数参数,分别表示起始索引值,结尾索引值(提取遵循左闭右开)。第二个参数可以省略,提取从起始索引开始一直到字符串结束。参数也可以传入负数,字符串最后一位索引可看作-1,倒数第二位为-2,以此类推。起始索引必须在结尾索引的左边,否则截取值为空字符串。
var txt = "abcdefg";
txt.slice(1,3);//"bc"
txt.slice(1);//"bcdefg"
txt.slice(-3,-1);//"ef"
txt.slice(-3);//"efg"
txt.slice();//"abcdefg"
txt.slice(3,1);//<empty string>
txt.slice(1,-1);//"bcdef"
-
substr()
作用:提取字符串一部分,返回一个字符串中从指定位置开始到指定个数的字符。
使用方法:字符串调用,传入两个参数,第一个表示起始索引值,第二个表示要截取的字符串长度。第二个参数不传入时,从起始位一直截取到字符串结尾,如果第一个参数 为负数,字符串最后一位索引可看作-1,倒数第二位为-2,以此类推。从起始位置向字符串结尾截取。如果第二个参数小于等于0,则返回一个空字符串
var txt = "abcdefg";
txt.substr(2,3);//"cde"
txt.substr(2);//"cdefg"
txt.substr(-3,2);//"ef"
txt.substr(-3);//"efg"
txt.substr();//"abcdefg"
txt.substr(2,-1);//<empty string>
-
substring()
作用:提取字符串一部分,返回一个字符串中两个指定的索引号之间的字符。
使用方法:两个参数之间没有明确的顺序,左边大于右边或者右边大于左边都可,也可传入负数,也可以只传入一个参数。substring()的负数参数被看作0。
var txt = "abcdefg";
txt.substring(2,5);//"cde"
txt.substring(5,2);//"cde"
txt.substring(2,-2);//"ab"
txt.substring(-2,2);//"ab"
txt.substring(2);//"cdefg"
txt.substring(-2);//"abcdefg"
txt.substring(2,99);//"cdefg"
txt.substring(-2,99);//"abcdefg"
txt.substring(-99,-2);//<empty string>
txt.substring(-99,2);//"ab"
var txt = "aBcDeF";
txt.toLowerCase();//"abcdeffg"
txt.toUpperCase();//"ABCDEFG"
var txt = " abc de ";
txt.trim();//"abc de"
var txt = 123
txt.toString();//"123"
txt = true;
txt.toString();"true"
txt = new String('qwer')//typeof(txt)==Object
txt = txt.toString()//typeof(txt)==string
var txt = new String('qwer');//typeof(txt)==object
txt = txt.valueOf();//typeof(txt)==string
总结
再回来学习基础的时候感觉自己的基础很薄弱,于是想写一个博客来记录以下学习总结结果。当开始写的时候才觉得写博客的难度很大,怎样才能表达清楚一个方法的用处,表述的用词怎么才能准确,写出来的东西自己也要去一一验证过才敢写出来。在验证和查阅资料的过程中才发现原来每一个方法的不同使用姿势,感觉十分的有趣。