JS 字符串操作
1.length
获取字符串长度
str.length 返回值为Number型
2.索引【i】
通过下标获取字符串指定位置的字符,但是不能改变该索引对应的值()
var str = "hello world"
alert(str[0]);
str[0] = "H";//不会影响str,但也不会报错
3.toUpperCase()
将字符串全部转为大写
str.toUpperCase() 原字符串不变,返回新字符串
4.toLowerCase()
将字符串全部转为小写
str.toLowerCase() 原字符串不变,返回新字符串
5.indexOf()
搜索指定字符串出现的位置,接收两个参数,第一个参数表示要查找的元素,第二个参数表示要查找的位置,若找到则返回对应元素所在的位置,否则返回-1var s = 'hello world!'; (indexOf)
alert(s.indexOf('world'));//返回6 alert(s.indexOf('World'));//返回-1 alert(s.indexOf('o'));//返回4 alert(s.indexOf('o',6));//从第六位开始查找,返回7
6.concat()
将一个或多个字符串拼接起来,返回拼接到的新的字符串,原字符串不变
var str1 = "hello "; var res = str1.concat(" world","!"); alert(res);//返回hello world! alert(str1);//返回hello
7.trim()
删除元素前置及后缀的所有空格,然后返回结果,远数组不变
var str1 = " hello world "; var str2 = str1.trim(); alert(str1);//返回" hello world " alert(str2);//返回"hello world"
8.split()
基于指定的分隔符将一个字符串分割成多个字符串,并将结果存放在一个数组中,可以传两个参数,第一个参数为分隔符,第二个参数用于指定返回数组的大小,若省略该参数,则返回整个数组
var s = "1,23,45"; var arr1 = s.split(","); alert(arr1);//返回数组["1","23","45"] var arr2 = s.split(",",2); alert(arr2);//返回数组["1","23"]
9.slice()
返回被操作字符的子字符串,原字符串不变,接受两个参数,字符串的起始位置和结束位置,返回的字符串不包含结束位置的字符,第一个参数要小于第二个参数,否则返回"",若只有一个参数,返回起始位置到字符串结尾的所有字符串,若传递的参数为负数,将传入的负值与字符创的长度相加
var str = "hello world!";
alert(str.slice(3,7));//返回lo w
alert(str.slice(3));//返回lo world!
alert(str.slice(9,5));//返回""
alert(str.slice(-7,-3));//负数与长度相加,即str.slice(5,9)返回 wor
alert(str.slice(5,9));//返回 wor
10.substring()
当传入的参数是正数时,substring与slice的功能基本相同,唯一的区别是当第一个参数大于第二个参数时,方法将第二个参数作为截取的起始位置而将第一个参数作为截取结束的位置,且截取的字符串不包含第一个参数位置对应的值,,当传入的参数是负值时,该方法会将所有的负值转化为0
var str = "hello world!"; alert(str.substring(3,7));//返回lo w alert(str.substring(3));//返回lo world! alert(str.substring(9,5));//返回 wor,即str.substring(5,9),不包含第九项 alert(str.substring(-7,-3));//负数与长度相加,即str.substring(0,0)返回"" alert(str.substring(-7,3));//负数与长度相加,即str.substring(0,3)返回hel
11.substr()
返回指定位置开始的指定长度的字符串,原字符串不变,若第二个参数缺省就一直截取到字符串结束,当传递的参数为负值时,方法会将负的第一个参数与字符串的长度相加,将负的第二个参数转化为0
var s = 'hello world!'
alert(s.substr(0, 5));//从索引0开始,截取5个字符串,返回hello
alert(s.substr(7)); //从索引7开始截取,一直到结束,返回orld!
alert(s.substr(-7,3));//负数与长度相加,即str.substr(5,3),返回 wo
alert(s.substr(-7,-3));//负数与长度相加,即str.substr(5,0),返回""
12.replace()方法
replace()方法用来进行字符串替换操作,它可以接收两个参数,前者为被替换的子字符串(可以是正则),后者为用来替换的文本。
如果第一个参数传入的是子字符串或是没有进行全局匹配的正则表达式,那么replace()方法将只进行一次替换(即替换最前面的),返回经过一次替换后的结果字符串。
var str = 'abcdeabcde';
console.log(str.replace('a', 'A'));
console.log(str.replace(/a/, 'A'));
如果第一个参数传入的全局匹配的正则表达式,那么replace()将会对符合条件的子字符串进行多次替换,最后返回经过多次替换的结果字符串。
var str = 'abcdeabcdeABCDE'; console.log(str.replace(/a/g, 'A')); //返回AbcdeAbcdeABCDE console.log(str.replace(/a/gi, '$')); //返回$bcde$bcde$BCDE
13. match()方法
stringObject.match(substr)
stringObject.match(regexp)
match()方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
如果参数中传入的是子字符串或是没有进行全局匹配的正则表达式,那么match()方法会从开始位置执行一次匹配,如果没有匹配到结果,则返回null。否则则会返回一个数组,该数组的第0个元素存放的是匹配文本,除此之外,返回的 数组还含有两个对象属性index和input,分别表示匹配文本的起始字符索引和stringObject 的引用(即原字符串)。
var str = '1a2b3c4d5e';
console.log(str.match('h')); //返回null
console.log(str.match('b')); //返回["b", index: 3, input: "1a2b3c4d5e"]
console.log(str.match(/b/)); //返回["b", index: 3, input: "1a2b3c4d5e"]
如果参数传入的是具有全局匹配的正则表达式,那么match()从开始位置进行多次匹配,直到最后。如果没有匹配到结果,则返回null。否则则会返回一个数组,数组中存放所有符合要求的子字符串,并且没有index和input属性。
var str = '1a2b3c4d5e'; console.log(str.match(/h/g)); //返回null console.log(str.match(/\d/g)); //返回["1", "2", "3", "4", "5"]
14. search()方法
stringObject.search(substr)
stringObject.search(regexp)
search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。它会返回第一个匹配的子字符串的起始位置,如果没有匹配的,则返回-1。
var str = 'abcDEF'; console.log(str.search('c')); //返回2 console.log(str.search('d')); //返回-1 console.log(str.search(/d/i)); //返回3
15. lastIndexOf()方法
stringObject.lastIndexOf(searchvalue,fromindex)
lastIndexOf()语法与indexOf()类似,它返回的是一个指定的子字符串值最后出现的位置,其检索顺序是从后向前。
var str = 'abcdeabcde'; console.log(str.lastIndexOf('a')); // 返回5 console.log(str.lastIndexOf('a', 3)); // 返回0 从第索引3的位置往前检索 console.log(str.lastIndexOf('bc')); // 返回6
16. charAt()
stringObject.charAt(index)
charAt()方法可用来获取指定位置的字符串,index为字符串索引值,从0开始到string.leng – 1,若不在这个范围将返回一个空字符串。如:
var str = 'abcde'; console.log(str.charAt(2)); //返回c console.log(str.charAt(8)); //返回空字符串
17. prototype属性
prototype在面向对象编程中会经常用到,用来给对象添加属性或方法,并且添加的方法或属性在所有的实例上共享。因此也常用来扩展js内置对象,如下面的代码给字符串添加了一个去除两边空格的方法:
String.prototype.trim = function(){
return this.replace(/^\s*|\s*$/g, '');
}