JavaScript字符串方法
1、两个用于访问字符串中特定字符的方法是:charAt()
和charCodeAt()
:接收一个参数,基于0的字符位置。其中charAt()
方法以单个字符串的形式返回给定位置的那个字符。
var string = "hello world";
alert(string.charAt(1));//"e"
如果你想得到的不是字符而是字符编码,需要使用charCodeAt()方法
var string = "hello world";
alert(string.charCodeAt(1));//输出"101"
2、stringValue
:访问个别字符串的方法。可以使用方括号加数字索引来访问字符串中的特定字符。
var string = "hello world";
alert(stringValue[1]);//"e"
3、concat()
:用于将一个或多个字符串拼接起来,返回拼接得到的新字符串。
var string = "hello";
var result = string.concat("world");
alert(result);//"hello world"
alert(string);"hello"
var string2 = "hello";
var result2 = string2.concat("world","!");
alert(result2);//"hello world !"
alert(sting2);//"hello"
虽然concat()是专门用来拼接字符串的方法,但实践中使用更多的还是加号操作符(+)。
4、 slice()、substr()、substring()
这三个方法都返回被操作字符串的一个子字符串,而且都接受一个或两个参数。第一个参数指定子字符串的开始位置,第二个参数(在指定的情况下)表示子字符串的结束位置。slice()和substring()
的第二个参数指定的是子字符串最后一个字符后面的位置。而substr()
的第二个参数指定的是返回的字符个数。如果没有给这些方法传递第二个参数,则将字符串的末尾作为结束位置。
var str = "hello world";
alert(str.slice(3));//"lo world"
alert(str.substring(3));//"lo world"
alert(str.substr(3));//"lo world"
alert(str.slice(3,7));//"lo w";
alert(str.substring(3,7));//"lo w"
alert(str.substr(3,7));//"lo worl"
再给这三个方法传的参数是负值的时候,它们的行为就不尽相同了。其中slice()
方法会将传入的负值与字符串的长度相加。substr()
方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0,最后,substring()
方法会把所有负值参数都转换为0.
var str = "hello world";
alert(str.slice(-3));//"rld";
alert(str.substring(-3));//"hello world"
alert(str.substr(-3));//"rld"
alert(str.slice(3,-4));//"lo w"
alert(str.substring(3,-4));//"hel"
alert(str.substr(3,-4));//""空字符串
在给slice()
和substr()
传递一个负值参数时,它们的行为相同。当第二个参数是负值时,slice()
方法会把第二个参数转换为7,相当于调用了slice(3,7)
。substring()
方法会把第二个参数转换为0,使调用变成了substring(3,0)
,由于这个方法会将较小的数作为开始位置,将较大的数作为结束位置,因此相当于调用了substring(0,3)
。substr()
会将第二个参数转换为0,这就意味着返回包含零个字符的字符串,也就是空字符串。
5、字符串位置方法:有两个可以从字符串中查找子字符串的方法:indexOf()和lastIndexOf()
。这两个方法都是从一个字符串中搜索给定的子字符串,然后返子字符串的位置(如果没有找到该子字符串,则返回-1)。这两个方法的区别在于:indexOf()
方法从字符串的开头向后搜索子字符串,而lastIndexOf()
方法是从字符串的末尾向前搜索子字符串。
var str = "hello world";
alert(str.indexOf("o"));//4
alert(str.lastIndexOf("o"));//7
子字符串"o"第一次出现的位置是4,即"hello"中的"o";最后一次出现的位置是7,即"world"中的"o"。如果"o"在这个字符串中仅出现了一次,那么indexOf()
和lastIndexOf()
会返回相同的位置值。
这两个方法都可以接受可选的第二个参数,表示从字符串中的哪个位置开始搜索。换句话说,indexOf()
会从该参数指定的位置向后搜索,忽略该位置之前的所有字符;而lastIndexOf()
则会从指定的位置向前搜索,忽略该位置之后的所有字符。
var string = "hello world";
alert(string.indexOf("o",6));//7
alert(string.lastIndexOf("o",6));//4
在使用所有第二个参数的情况下,可以通过循环调用indexOf()
或lastIndexOf()
来找到所有匹配的子字符串。
var str = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
var positions = [];
var pos = str.indexOf("e");
while(pos > -1){
positions.push(pos);
pos = str.indexOf("e",pos+1);
}
alert(positions);//"3,24,32,35,52"
6、trim()
:创建一个字符串的副本,删除前置和后缀的所有空格,然后返回结果。
var str = " hello world ";
var trimStr = str.trim();
alert(str);" hello world "
alert(trimStr);//"hello world"
7、字符串大小写转换方法:有四个:toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocalUpperCase()
。
var str = "hello world";
alert(str.toLocaleUpperCase());//"HELLO WORLD"
alert(str.toUpperCase());//"HELLO WORLD"
alert(str.toLocalLowerCase());//"hello world"
alert(str.toLowerCase());//"hello world"