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
相关产品推荐
相关产品推荐

