String类型的属性和方法(三)

查找字符串的位置:

有两个实现的方式lastIndexOf()和indexOf();

indexOf(searchString,index)接受两个参数,searchString是首次出现的位置,如果没有找到则返回-1,

该方法会隐式调用String()转型函数,将searchString非字符串转化为字符串;隐式调用Number()转型函数。将index非数字(undefined除外)转换为数值。
searchString表示要搜索的字符串。index表示开始的位置,若忽略该参数或者改参数是undefined、NAN,或者负数时,则index=0;

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));//9
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

lastIndexOf();

  lastIndexOf(searchString,start)方法接收searchString和start两个参数,返回searchString第一次出现的位置,如果没有找到则返回-1;
  
  同样地,该方法会隐式调用String()转型函数,将searchString非字符串值转换为字符串;隐式调用Number()转型函数,将start非数字值(undefined除外)转换为数值
  
  searchString表示要搜索的子字符串;start表示该搜索的开始位置,若忽略该参数或该参数为undefined、NaN时,start = length - 1;若start为负数,start = 0;
  

var string = 'hello world world';
console.log(string.lastIndexOf('ld'));//15
console.log(string.lastIndexOf('ld',undefined));//15
console.log(string.lastIndexOf('ld',NaN));//15
console.log(string.lastIndexOf('ld',-1));//-1
console.log(string.lastIndexOf('h',-1));//0
console.log(string.lastIndexOf('w',undefined));//12

console.log(string.lastIndexOf('ld',10));//9
console.log(string.lastIndexOf('ld',[10]));//9
console.log(string.lastIndexOf('true',[10]));//-1
console.log(string.lastIndexOf(false,[10]));//-1

查找字符串中符合所有条件的字符串

可以循环调用indexOf()或者lastIndexOf();

  //查找符号条件的字符串
  function allIndex(str,value){
    var resule =[];
    var need = str.indexOf(value);
    while(need > -1){
      resule.push(need);
      need = str.indexOf(value,need+value.length);
    }
    return resule;
  }
  console.log(allIndex('123455577889999','99'));

lastIndexOf()方法常用于获取URL地址中的扩展名

var url = 'http://cnblogs.com/xiaohuochai.txt';
function sliceURL(url){
    var index = url.lastIndexOf('.');
    return url.slice(index+1);
}
console.log(sliceURL(url));//txt

正则匹配方法

JavaScript中的一些正则操作如查找个测试等可以通过RegExp的方法实现,切分和替换另一些操作可以通过String实现,
String类共有match().search(),replace(),split()四种正则匹配方法。

match()

match()方法只接受一个正则或者是字符串的参数,并以数组的形式返回匹配的内容。若匹配失败,则match会返回null

'x'.match(/y/);//null

若不设置全局的话match和exec方法返回的结果相同。

var string = 'cat,bat,sat,fat';
var pattern = /.at/;
var matches = string.match(pattern);
console.log(matches);

这里写图片描述

(以下来自MDN)
返回的Array拥有额外的input属性,该属性包含被解析的原字符串。另外还有一个index属性,表示匹配字符在原字符串中的索引(以0开始)。为方便,也可以这样写

var string = 'cat,bat,sat,fat';
var pattern = /.at/;
var matches = string.match(pattern);
console.log(matches,matches.index,matches.input)

不用描述

var string = 'cat,bat,sat,fat';
var pattern = /.at/;
var exec = pattern.exec(string);
console.log(exec);

这里写图片描述

设置全局标志后。exec方法依然返回单次的匹配结果,而match()方法会返回一个字符串数组,其中包括各次成功匹配的文本,但是没有index个input的属性

var string = 'cat,bat,sat,fat';
var pattern = /.at/g;
var matches = string.match(pattern);
console.log(matches,matches.index,matches.input);

这里写图片描述

//加了全局
var string = 'cat,bat,sat,fat';
var pattern = /.at/g;
var exec = pattern.exec(string);
console.log(exec);

这里写图片描述

match()方法作为字符串String的方法,接受参数为字符串,结果与不设置全局标志的正则表达式为参数相同,只返回第一个匹配项,具有index和input的属性。换个一目了然的写法

var string = 'cat,bat,sat,fat';
var matches = string.match('at');
console.log(matches,matches.index,matches.input);

这里写图片描述

当不设置全局标志时,match()方法和exec()方法都包含分组捕获信息;设置全局后,match()方法不包含捕获分组信息。

var string = 'cat,bat,sat,fat';
var pattern = /(.)at/g;
var matches = string.match(pattern);
console.log(matches);

这里写图片描述

var string = 'cat,bat,sat,fat';
var pattern = /(.)at/;
var exec = pattern.exec(string);
console.log(exec);

var string = 'cat,bat,sat,fat';
var pattern = /(.)at/g;
var exec = pattern.exec(string);
console.log(exec);

这里写图片描述

exec只能是返回第一个匹配结果,如果返回全部匹配的话用while调用

replace

replace方法是用于替换一个或者是多个字符串,它接受两个参数:第一个是正则表达式或者字符串,表示待查找的内容;第二个是字符串或者是正则表达式,表示替换的内容。返回替换后的字符串。

1:替换字符串,只能替换第一个字符串

var string = 'cat,bat,sat,fat';
var need = string.replace('at','kong');
console.log(need);

这里写图片描述

2:正则不设置全局的话也是只能替换第一个

var string = 'cat,bat,sat,fat';
var result = string.replace(/at/,'ond');
console.log(result);

var string = 'cat,bat,sat,fat';
var result = string.replace(/at/g,'ond');
console.log(result);

这里写图片描述

replace带我综合的研究下再整理,有些多,有些还不能理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值