本文主要是关于字符串方法的介绍。
创建
String类型是字符串的对象包装类型,可以使用String构造函数来创建。
var stringObject = new String("Hello World");
String对象的方法也可以在所有基本的字符串值访问到,其中继承valueOf()、toLocaleString()后如toString()方法,都返回
length属性
String对象的每个实例都有一个length属性,表示字符串中包含多个字符。
var stringObject = new String("Hello World");
console.log(stringObject.length); // 11
1.字符方法
两个用于访问字符串中特定字符的方法:charAt() 和charCodeAt() 。这两个方法都接收一个参数,即基于0的字符位置。
charAt()
charAt()方法以单字符字符串的形式返回给定位置的那个字符。
charCodeAt()
返回给对应位置字符的字符编码。
[]方括号
加索引返回字符串的特定字符。
var stringValue = "Hello World";
console.log(stringValue.charAt(1)); // e
console.log(stringValue.charCodeAt(1)); // 101
console.log(stringValue[1]); //e
2.字符串操作方法
concat()
用于字符串拼接并返回一个新的字符串。
var stringValue = "Hello";
var result = stringValue.concat(" World","!");
console.log(result); // Hello World!
console.log(stringValue); // Hello
常用的是加号(+)操作符,更加简便。
slice()
substr()
substring()
三个基于子字符串创建新字符串的方法:slice()、substr()、substring()。这三个方法,都会返回被操作字符串的一个子字符串,而且能接受一两个参数。第一个参数指定子字符串的开始位置,第二个(在指定情况下)参数表示子字符串在哪里结束。
具体来说,slice()和substring()的第二个参数指定的是子字符串最后一个字符后面的位置。而substr()的第二个参数指定返回字符的个数。
如果没第二个参数,则将字符串的末尾作为结束位置。这几个方法不修改原字符串。
主要是例子:
var stringValue = "Hello World";
console.log(stringValue.slice(3)); // lo World
console.log(stringValue.substring(3)); // lo World
console.log(stringValue.substr(3)); // lo World
console.log(stringValue.slice(3,7)); // lo W
console.log(stringValue.substring(3,7));// lo W
console.log(stringValue.substr(3,7)); // lo Worl
可以看到在只有参数 3 的情况下,三个方法返回 “lo World” ,因为索引为3的位置的字符是第二个"l",所以截到了数组末尾。
在有参数3和7的情况下,substr()和sunstring()返回“lo W”,截取的是字符串内3位置(l,第二个)和7位置(o,第二个),结果内不包含(o),但是 substr() 返回“lo Worl”,因为它的第二个参数指定的是要返回的字符个数。
当参数为负值或有负值时:
- slice()会将传入的负值与字符串长度相加
- substr() 将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0
- sunstring() 会把所有的负值都转换为 0
看示例:
var stringValue = "Hello World";
console.log(stringValue.slice(-3)); // rld
console.log(stringValue.substring(-3)); // Hello World
console.log(stringValue.substr(-3)); // rld
console.log(stringValue.slice(3,-4)); // lo W
console.log(stringValue.substring(3,-4));// Hel
console.log(stringValue.substr(3,-4)); // ""
当只有一个参数且参数为负数时,slice() 和substr()的行为相同。这里传递的 -3 被转换为8 (-3加上长度11,结果为8),等于是调用了slice(8)和substr(8)。而substring()方法返回全部字符串,因为它将 -3 转换成了0。
当第二个参数为负值时,slice(3, -4)等价于 slice(3,7),所以返回 “lo W”。
substring(3,-4) 将第二个参数转换为 0 ,substring(3, 0),由于这个方法将较小的数作为起始位置,所以substring(0,3),返回“Hel”。
substr()会将第二个参数转换为0,即返回0个字符的字符串,就是一个空字符串。
3.位置方法
indexOf()
lastIndexOf()
可以从字符串中查找子字符串的方法 indexOf()、lastIndexOf()。这两个方法都是从一个字符串中搜索给定的字符串,然后返回子字符串的位置(如果没有该子字符串,则返回-1)。这两个方法的区别在于:indexOf()方法从字符串的开头向后搜索字符串,而lastIndexOf()则会从指定位置向前搜索字符串。
var stringValue = "Hello World";
console.log(stringValue.indexOf("o")); // 4 Hello里的o
console.log(stringValue.lastIndexOf("o")); // 7 World里的o
可以指定第二个参数,第二个参数表示可以从字符串的哪个开始搜索。
var stringValue = "Hello World";
console.log(stringValue.indexOf("o",6)); // 7 World里的o
console.log(stringValue.lastIndexOf("o",6)); // 4 Hello里的o
4.trim()
去除字符串前后空格,然后返回结果。
var str = " 123 asds 454 ";
var strtirm = str.trim();
console.log(strtirm); // "123 asds 454"
5.字符串大小写转换
四个:
经典写法:toLowerCase()、toUpperCase()
特定地区实现:toLocaleLowerCase()、toLocaleUpperCase()
var str = "Hello World";
//经典写法
console.log(str.toLowerCase()); // hello world
console.log(str.toUpperCase()); // HELLO WORLD
// 地区写法
console.log(str.toLocaleLowerCase()); // hello world
console.log(str.toLocaleUpperCase()); // HELLO WORLD
6.字符串的模式匹配方法
match()
只接收一个参数,要么是一个正则表达式,要么是RegExp对象。
var text = "cat, bat, sat, fat";
var pattern = /.at/;
var matches = text.match(pattern);
console.log(matches.index); // 0
console.log(matches[0]); // cat
console.log(pattern.lastIndex); // 0
search()
用于查找模式的方法,参数与match()一致。返回字符串中第一个匹配项的索引,如果没有找到匹配项,则返回-1。查找方式始终为从字符产开头向后查找。
var text = "cat, bat, sat, fat";
var pos = text.search(/at/);
console.log(pos); // 1 "at"在字符串第一次出现的位置
replace()
这个函数接收两个参数:第一个参数可以是一个RegExp对象或者是一个字符串,第二个参数可以是一个字符串和或者是一个函数。
如果第一个参数是一个字符串,那么只能替换掉第一个子字符串,要想替换掉所有子字符串,唯一的方法是 提供一个正则表达式。
var text = "cat, bat, sat, fat";
var res = text.replace("at","ond");
console.log(res); // cond, bat, sat, fat
res = text.replace(/at/g, "ond");
console.log(res); // cond, bond, sond, fond
split()
这个方法可以基于指定的分隔符将一个字符串分割成。多个子字符串,并将结果放在一个数组中。
var color = "red, blue, yellow, orange";
var color1 = color.split(",");
var color2 = color.split(",",2);
var color3 = color.split(/[^\,]+/);
console.log(color1); // ["red", " blue", " yellow", " orange"]
console.log(color2); // ["red", " blue"]
console.log(color3); // ["", ",", ",", ",", ""]
7.localeCompare()
这个是有关操作 字符串的最后一个方法:localeCompare()。这个是比较两个字符串,并返回下列值中的一个:
- 如果字符串在字母表应该排在字符串参数之前,则返回一个负数(大多为-1);
- 如果字符串等于字符串参数,则返回0;
- 如果字符串在字母表中应该排在字符串参数之后,则返回一个正数(大多为1)。
var str = "yellow";
console.log(str.localeCompare("brick")); // 1
console.log(str.localeCompare("yellow")); // 0
console.log(str.localeCompare("zoo")); // -1