没听过一句话吗?程序员的世界,不处理字符串就是处理数组。这是群里的一位前辈和我说的,显然这和我之前理解的DOM是javascript的核心的不同的,看了几个面试题的内容,感觉前辈说的话非常的有道理,因此总结下,javascript中对字符串的操作。
String类型
首先字符串类型是基本类型,但是在这里我们所说的是字符串的对象包装类型。因为只有引用类型才会有属性和方法。实际上每读取一个基本类型的同时都会创建一个对应的基本包装类型,从而让我们能够调用一些方法来操作数据。
1.charAt() 和 charCodeAt()
两个方法都接受一个索引参数,charAt()返回对应索引的字符,charCodeAt()返回对应字符的字符编码。
2.concat()
用于将一个或多个字符串拼接起来,返回拼接得到的新字符串。
eg:
var str1 = '111'; var result = str1.concat('abcd','dsas');//结果111abcddsas
3.slice()、substr()、substring()
这三个方法都是对字符串的截取。且都接受一个或两个参数。他们的第一个参数都表示起始位置。
(1) slice()的第二个参数指定需要截取的位置的后面的字符索引。如果没有第二个参数则字符串长度作为结束位置。当传入负值时,会将负值与字符串的长度相加。
var str1 = "hello world" alert(str1.slice(3));//不传第二个参数时默认为字符串长度结果:lo world alert(str1.slice(3,7));//lo w alert(str1.slice(-3));//传入负值与字符串长度相加结果:rld alert(str1.slice(3,-7));//结果:l
(2) substring()的第二个参数指定需要截取的位置的后面的字符索引。如果没有第二个参数则字符串长度作为结束位置。当传入负值时,会将所有负值转换成0.
var str1 = "hello world" alert(str1.substring(3));//不传第二个参数时默认为字符串长度结果:lo world alert(str1.substring(3,7));//lo w alert(str1.substring(-3));//第一个参数为负值转换为0第二个默认为字符串长度,结果:hello world alert(str1.substring(3,-7))//结果:hel
(3)substr()的第二个参数时指定的截取长度,如果没有第二个参数则字符串长度作为结束位置。当传入负值时,会将第一个参数加上字符串的长度,而第二个参数转换为0.
var str1 = "hello world" alert(str1.substr(3));//不传第二个参数时默认为字符串长度结果:lo world alert(str1.substr(3,7))//结果:lo worl alert(str1.substr(-3))//结果//rld alert(str1.substr(3,-7))//结果:""
4.indexOf()、lastIndexOf()
这两个方法都接受两个参数,第一个参数时要确定位置的子字符串,第二个参数可选,是开始搜索的位置。方法,返回该子字符串的位置,如果未找到,则返回-1。indexOf()是从开头开始搜索,而lastIndexOf()则是从末尾向前搜索。
var str1 = "hello world"; alert(str1.indexOf("o"));//4 alert(str1.lastIndexOf("0"));//7 alert(str1.indexOf("a"))//-1 alert(str1.indexOf("o",6));//7 alert(str1.lastIndexOf("o",6));//4
5.trim()
trim()用于去除字符串两边的空格。
6.toLowerCase()、toUpperCase()
这两种方法用于转换字符串的大小写。直接看例子:
var str1 = "hello world" var str2 = "HELLO WORLD" alert(str1.toUpperCase());//HELLO WORLD alert(str2.toLowerCase());//hello world
此外还有toLocaleLowerCase(),和toLocaleUpperCase()方法,与这两种方法类似。
7.match()
match()方法类似于正则中的exec(),接受一个参数,参数为正则表达式或者字符串。返回一个数组。数组内容与调用exec()方法一致。
var text = "cat, bat, sat, fat"; var pattern = /.at/; var matches = text.match(pattern); alert(matches.index); //0 alert(matches[0]); //"cat" alert(pattern.lastIndex); //0
8.search()
search()方法与match()方法参数一致,返回第一个匹配项的索引,如果没有匹配到则返回-1,始终从开头向后查找。
var text = "cat, bat, sat, fat"; var pos = text.search(/at/); alert(pos); //1
9.replace()
replace()方法接受两个参数,第一个参数可以是一个正则对象或者一个字符串,第二个参数可以使一个字符串或者一个
函数。如果第一个参数为字符串,则返回由第二个参数替换调用字符串中子字符串的字符串。且只会替换第一个。若想全局替换,则需要使用正则,且要指定全局。
var text = "cat, bat, sat, fat"; var result = text.replace("at", "ond"); alert(result); //"cond, bat, sat, fat" result = text.replace(/at/g, "ond"); alert(result); //"cond, bond, sond, fond"
10.split()
这个方法会根据一个分隔符将一个字符串分割成多个子字符串并将结果放进一个数组。方法也可以接受第二个参数用来指定结果数组的大小。
var colorText = "red,blue,green,yellow"; var colors1 = colorText.split(","); //["red", "blue", "green", "yellow"] var colors2 = colorText.split(",", 2); //["red", "blue"] var colors3 = colorText.split(/[^\,]+/); //["", ",", ",", ",", ""]
此外还有formCharCode()方法用于将字符编码转换为字符串。
alert(String.fromCharCode(104, 101, 108, 108, 111)); //"hello"
以上为部分字符串方法。总结于《javascript高级程序设计》