indexOf 与 lastIndexOf

indexOf和lastIndexOf是用于查找字符串中指定字符或子串的位置。它们分别从左到右和从右到左查找,但返回的索引值都是从字符串开头开始计算。当查找的字符或子串在字符串中只出现一次时,两者返回相同索引;若出现多次,indexOf返回第一次出现的位置,lastIndexOf返回最后一次出现的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • indexOf 和  lastIndexOf 是什么?
  •   indexOf 和 lastIndexOf 都是索引文件
  •   indexOf 是查某个指定的字符串在字符串首次出现的位置(索引值) (也就是从前往后查)
  •        lastIndexOf 是从右向左查某个指定的字符串在字符串中最后一次出现的位置(也就是从后往前查)
  •        eg:      
  • 注意:  
  • 那么问题来了 两个不是一前一后相反方向还是查么?怎么他们两个返回的索引值相同呢? 
  • 因为:lastIndexOf()方法虽然是从后往前搜索,但返回的位置是从前开始数数和计算的,所以结果和indexOf()方法返回的相同

             接下来在看一个例子:

          

  •    这个时候两个返回的索引值就不同了
  •    因为: 前面已经说了indexOf是从前向后查  而lastIndexOf是从后向前查   但是二者返回索引都是从前开始数数和计算的

示例:


  /**
    * 从apkSerial中提取出apkVersion
    *
    * @param apkSerials
    * @return
    */
  def getApkVersion(apkSerials: String) = {
    if (apkSerials != null) {
      if (apkSerials == "")
        "kong"
      else if (apkSerials.contains("_")) {
        apkSerials.substring(apkSerials.lastIndexOf("_") + 1)
      } else {
        apkSerials
      }
    } else
      "null"
  }

  /**
    * 将version新旧版区分开
    */
  def getVersion(apkVersion: String) = {
    if (apkVersion != null && apkVersion >= "3.1.4") "new"
    else "old"
  }
}

 

  • 总结:
  •    当数组(字符串)中所要查询的数(字符串/字符)在字符串(数组)中只出现一次的时候 二者返回的索引值相同
  •    当数组(字符串)中所要查询的数(字符串/字符)在字符串(数组)中出现两次及以上的时候  
  •       indexOf  返回的是 valuesearch 第一次在数组(字符串)出现的位置(从左往右)
  •       lastIndexOf 返回的是 valuesearch 最后一次在数组(字符串)出现的位置(从左往右)(只不过查询的方向不同而已)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值