You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala字符串indexOf方法第二个参数含义及运行结果疑问

Scala字符串indexOf方法第二个参数含义

首先明确:Scala的String底层兼容JavaString的实现,indexOf的第二个参数是搜索起始下标,表示从字符串的该下标位置开始,向后查找第一个匹配目标子串/字符的下标,如果从该位置往后没有匹配内容则返回-1。

示例结果解释

测试用字符串的核心下标对应关系:

字符串:"Check out the big brains on Brad!"
下标6的位置是第一个o(对应"out"的首字母)
下标25的位置是第二个o(对应"on"的首字母)

第一个示例解释

你给出的第一份代码:

object Playground extends App {
    val g: String = "Check out the big brains on Brad!"
    println(g.indexOf("o",7));
}

这里第二个参数是7,即从下标7的位置开始搜索。下标6的o在起始搜索位置之前,会被跳过,因此只能找到后面下标25的o,最终返回25。

循环测试结果解释

你给出的循环测试代码:

object Playground extends App {
    val g: String = "Check out the big brains on Brad!"
    (1 to 7).foreach(i => println(s"$i th Occurence = ${g.indexOf("o",i)} "))
}

输出结果的逻辑:

  • 当i <= 6时,搜索起始位置小于等于6,下标6的o在搜索范围内,因此返回第一个o的位置6
  • 当i = 7时,搜索起始位置为7,下标6的o被排除,只能找到后面下标25的o,因此返回25

误区纠正

你之前猜测第二个参数是「第n次出现的下标」是错误的,该参数和出现次数无关,仅用来限定搜索的起始位置。


内容的提问来源于stack exchange,提问作者Shivam Sahil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:36:07