属性:
字符串String类型的每个实例都有一个length属性,表示字符串中的字符个数。由于字符串是不可变的,所以字符串的长度也不可变。
字符串的length属性不会在for/in循环中枚举,也不能通过delete操作符删除。
注意对于字符串s来说,最后一个字符的索引是s.length - 1。
var str = "test"; console.log(str.length);//4 str.length = 6; console.log(str,str.length);//"test",4
实例方法:
字符串String对象有多达20多个实例方法,包括toString()、toLocaleString()、valueOf()从Object对象继承的3种对象通用方法,chartAt()、中括号[]、charCodeAt()和fromCharCode()4种访问字符方法,concat()和加号+这2种字符串拼接方法,slice()、substr()和substring()3种创建子字符串方法,toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase()这4种大小写转换方法,indexOf()和lastIndexOf()这2种查找字符串位置的方法,match()、search()、replace()、split()这4种正则匹配方法以及去除首尾空格的trim()方法和字符串比较的localeCompare()方法.
对象通用方法:
String()是与字符串对应的包装类型,继承了Object对象的通用方法toString(), toLoaleString(),valueOf(),这三个方法。
【toString()】
toString()方法返回string的原始字符串值
【toLocaleString()】
toLocaleString()方法返回string的原始字符串值
【valueOf()】
valueOf()方法返回string的原始字符串值
console.log("test".valueOf());//"test" console.log("test".toString());//"test" console.log("test".toLocaleString());//"test"
访问字符串方法:
字符串的访问方式有4中charAt(),[],charCodeAt(),fromCharCode()。
1:charAt()
方法值接受一个基于0的字符位置的参数。返回制定位置的字符。当参数为NAN时,默认参数为0,当参数超出范围是,则返回一个空字符串。
var str = "hello"; console.log(str.charAt(1));//e console.log(str.charAt(-1));//'' console.log(str.charAt(10));//'' console.log(str.charAt());//h console.log(str.charAt(NaN));//h
charAt()方法牵扯到Numner的函数的隐试类型的转换,如果转换为数值,则按照上述规则输出字符串,如果转换为NAN,则输出第0个字符。
var str = "hello"; console.log(str.charAt(true));//'e' console.log(str.charAt(false));//'h' console.log(str.charAt('abc'));//'h' console.log(str.charAt({}));//'h' console.log(str.charAt([2]));//'l'
注意 x.charAt(pos)与x.substring(pos, pos+1)、x.substr(pos,1)、x.slice(pos,pos+1)的结果相等.
var str = "hello"; console.log(str.charAt(1));//'e' console.log(str.substring(1,2));//'e' console.log(str.slice(1,2));//'e' console.log(str.substr(1,1));//'e'
[]中括号方式
ECMAScript5定义了另一个访问字符的方法,使用方括号加数字索引来访问字符串中的特定字符。如果参数超出范围或是NaN时,则输出undefined;没有参数时,会报错;该方法没有Number()转型函数的隐式类型转换,但参数为单数值数组时可转换为数值。
var str = "hello"; console.log(str[0]);//h console.log(str[[1]]);//e console.log(str[false]);//undefined console.log(str[-1]);//undefined console.log(str[NaN]);//undefined console.log(str[]);//报错
有文档说IE7-浏览器不支持,未测试。
charCodeAt()
charCodeAt()和charAt(),类似,接受一个基于0的字符参数,但是返回的是制定位置字符16位Unicode编码。返回值是一个16位的整数,在0-65535之间,即在0x0000-0xffff之间。
参数为空或者NAN时,默认参数为0。当参数超出范围时,则返回NAN;
var str = "hello"; console.log(str.charCodeAt());//104 console.log(str.charCodeAt(0));//104 console.log(str.charCodeAt(1));//101 console.log(str.charCodeAt(-1));//NaN console.log(str.charCodeAt(10));//NaN console.log(str.charCodeAt(NaN));//104
同样地,charCodeAt()方法涉及到Number()函数的隐式类型转换,如果转换为数值,则按照上述规则输出相应值;如果转换为NaN,则输出第0个字符的字符编码
var str = "hello"; console.log(str.charCodeAt(true));//101 console.log(str.charCodeAt(false));//104 console.log(str.charCodeAt('abc'));//104 console.log(str.charCodeAt({}));//104 console.log(str.charCodeAt([2]));//l08
fromCharCode()
String()构造函数本身有一个静态方法,fromCharCode(),这个方法的作用是就收一个或者是多个字符编码,然后把他们转化成一个字符串。从本质上看的话与实例方法charAt()执行的是相反的操作。若参数为空或者NAN时,则返回空的字符串;若参数超出0-65535的范围,则输出的字符不可控制。
console.log(String.fromCharCode(104,101,108,108,111));//'hello' console.log(String.fromCharCode());//'' console.log(String.fromCharCode(NaN));//'' console.log(String.fromCharCode(-1)); console.log(String.fromCharCode(65560));
字符串拼接:
concat()
concat()方法将一个或者是多个字符串拼接起来,返回并得到新的字符串,而原字符串不发生变化。若参数(第一个单数除外)不是字符串,则通过String()方式隐式转换字符串,在进行字符串拼接
var stringValue = 'hello '; var result = stringValue.concat('world','!'); console.log(result);//'hello world!' console.log(stringValue);//'hello'
第一个参数必须是字符串,如果不是字符串会报错.
(1).concat('2');//报错 (true).concat('false');//报错 ({}).concat('abc');//报错
由于数组也存在concat的方法,参数会按照首先出现的参数是数组还是字符串来进行转换
'1,2,3,'.concat([4,5]);//'1,2,3,4,5' [1,2,3].concat(',4,5');//[1, 2, 3, ",4,5"]
加号运算符(+)
在实际中还是能遇到很多使用+来连接字符串,有时候也比concat方便许多。
var stringValue = 'hello '; console.log(stringValue.concat('world','!'));//'hello world!' console.log(stringValue + 'world' + '!');//'hello world!'
当操作的其中一个字符串,或者是对象转换为字符串时,才进行字符串拼接。
1 + 2;//3 '1' + 2;//'12' var o = {valueOf:function(){return '1';}}; o + 2;//'12' var o = {valueOf:function(){return 1;}}; o + 2;//3