Javascript类型系统之String字符串类型详解(5)

  同样地,该方法会隐式调用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)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzsjxw.html