同样地,该方法会隐式调用String()转型函数,将searchString非字符串值转换为字符串;隐式调用Number()转型函数,将start非数字值(undefined除外)转换为数值
searchString表示要搜索的子字符串;start表示该搜索的开始位置,若忽略该参数或该参数为undefined、NaN时,start = length - 1
[注意]与indexOf()方法不同,若start为负数,则该方法返回-1
var string = 'hello world world'; console.log(string.indexOf('ld'));//9 console.log(string.indexOf('ld',undefined));//9 console.log(string.indexOf('ld',NaN));//9 console.log(string.indexOf('ld',-1));//-1 console.log(string.indexOf('ld',10));//15 console.log(string.indexOf('ld',[10]));//15 console.log(string.indexOf('true',[10]));//-1 console.log(string.indexOf(false,[10]));//-1
【tips】查找出字符串所有符合条件的子字符串
可以通过循环调用indexOf()或lastIndexOf()来找到所有匹配的子字符串
function allIndexOf(str,value){ var result = []; var pos = str.indexOf(value); while(pos > -1){ result.push(pos); pos = str.indexOf(value,pos+value.length); } return result; } console.log(allIndexOf('helllhelllhelll','ll'));//[2,7,12]
【trim()】
ECMAScript5为所有字符串定义了trim()方法。这个方法会创建一个字符串的副本,删除前置及后缀的所有空白字符,然后返回结果
由于trim()方法返回的是字符串的副本,所以原始字符串中的前置及后缀空格会保持不变
[注意]IE8-浏览器不支持
var string = ' hello world '; console.log(string.trim());//'hello world' console.log(string);//' hello world '
空白字符不仅仅包括空格,还包括制表符(\t)、换行符(\n)和回车符(\r)
'\r\nabc \t'.trim() // 'abc'
此外,firefox、safari和webkit还支持非标准的trimRight()用于删除字符串结尾的空白字符
var string = ' hello world '; console.log(string.trimRight());//' hello world';
【tips】用trim()来判断输入的字符是否为空
if(usename.trim().length){ alert('correct'); }else{ alert('error'); }
【tips】用正则表达式模拟trim()
function fnTrim(str){ return str.replace(/^\s+|\s+$/,'') } console.log(fnTrim(' hello world '));//'hello world'
大小写转换
ECMAScript中涉及字符串大小写转换的方法有4个:toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase()
toLowerCase()和toUpperCase()是两个经典的方法,借鉴自java.lang.String中的同名方法。而toLocaleLowerCase()和toLocaleUpperCase()方法则是针对特定地区的实现,对有些地区来说,针对地区的方法与其通用方法得到的结果相同,但少数语言(如土耳其语)会为Unicode大小写转换应用特殊的规则,这时候就必须使用针对地区的方法来保证实现正确的转换
【toUpperCase()】
toUpperCase()方法将字符串转换成大写
【toLowerCase()】
toLowerCase()方法将字符串转换成小写
【toLocaleUpperCase()】
toLocaleUpperCase()方法将字符串转换成大写(针对地区)
【toLocaleLowerCase()】
toLocaleLowerCase()方法将字符串转换成小写(针对地区)
[注意]在不知道自己的代码将在哪个语言环境中运行的情况下,使用针对地区的方法更稳妥
var string = 'Hello World'; console.log(string.toLowerCase());//hello world console.log(string.toLocaleLowerCase());//hello world console.log(string.toUpperCase());//HELLO WORLD console.log(string.toLocaleUpperCase());//HELLO WORLD
这4种方法均不支持String()隐式类型转换,只支持字符串类型
(true).toLowerCase();//报错
(2).toLocaleLowerCase();//报错
({}).toUpperCase();//报错
([]).toLocaleUpperCase();//报错
[注意]大小写转换方法可以连续使用
var string = 'Hello World'; console.log((string.toUpperCase()).toLowerCase());//hello world
【localeCompare()】
localeCompare()方法用于比较两个字符串,遵循下列规则
【1】如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(大多数情况下为-1)
【2】如果字符串等于字符串参数,则返回0
【3】如果字符串在字母表中应该排在字符串参数之后,则返回一个正数(大多数情况下为1)