星星火燎原

梳理了一下 indexOf() 与 lastIndexOf() 的区别和使用:

var str = 'xxa xxa xxax';

//不带参数
var firstA1 = str.indexOf('a');
    firstA1 = firstA1 + 1;             //默认计算的位数实际是到a的前一位,所以+1才是a的所处位置

var endA1 = str.lastIndexOf('a')         
    endA1 = endA1 + 1;                 //同上

//带参数   
var firstA2 = str.indexOf('a',5);
    firstA2 = firstA2 + 1;             //默认计算的位数实际是到a的前一位,所以+1才是a的所处位置
  
var endA2 = str.lastIndexOf('a',7)         
    endA2 = endA2 + 1;                 //同上
      
    
console.log('字符串总长度是>>>>>>>>>>' + str.length);

console.log('第一个a字符,在总长度中的位置是>>>>>>>>>>' + firstA1);              //输出3
console.log('最后一个a字符,在总长度中的位置是>>>>>>>>>>' + endA1);              //输出11


console.log('字符串的前5位之后,第一个a在总长度中的位置是>>>>>>>>>>' + firstA2);  //输出7    
console.log('字符串的前7位之内,最后一个a在总长度中的位置是>>>>>>>>>>' + endA2);  //输出7

注意:

  • 1. indexOf('a', 5) 查找的是字符串前5位之后的第一个a
  • 2. lastIndexOf('a', 7) 查找的是字符串前7位之内的最后一个a
  • 3. 千万不要混淆把 lastIndexOf('a', 7) 理解成查找字符串倒数第7位中的a
  • 4. 空格也是一位数
  • 5. 带参数是为了定位,要找哪段字符串中的 a,找到这个 a 后,再从前往后数,计算并返回它在总字符串中的位置。