java中查找字符或子串索引主要用string类的indexof()和lastindexof()方法:前者从头找首次匹配(返回下标或-1),后者从尾找末次匹配;均区分大小写,空字符串匹配总返回0;复杂场景可用pattern/matcher正则匹配。

Java 中查找字符串中指定字符或子串的索引,主要靠 String 类提供的几个内置方法,最常用的是 indexOf() 和 lastIndexOf()。它们返回匹配位置的下标(从 0 开始),没找到则返回 -1。
查找第一个匹配位置:indexOf()
用于从头开始找第一次出现的位置。
-
indexOf(char ch):查找单个字符,例如"hello".indexOf('l')返回2 -
indexOf(String str):查找子串,例如"hello world".indexOf("world")返回6 -
indexOf(char ch, int fromIndex):从指定下标开始向后找,例如"abababa".indexOf('a', 2)返回2(注意:fromIndex 是起始搜索位置,不是跳过前 N 个) -
indexOf(String str, int fromIndex):同理,从指定位置开始找子串
查找最后一次匹配位置:lastIndexOf()
从尾部反向搜索,适合找末尾出现的字符或子串。
-
lastIndexOf(char ch):例如"banana".lastIndexOf('a')返回5 -
lastIndexOf(String str):例如"a-b-c-b-a".lastIndexOf("b")返回5 - 也支持带
fromIndex的重载,表示“搜索范围上限”,即只查[0, fromIndex]区间(不是从该位置往回搜)
区分大小写与空字符串
indexOf 和 lastIndexOf 默认区分大小写,且对空字符串有特殊行为:
-
"abc".indexOf("")返回0(空串在任意位置都算匹配,总返回起始索引) -
"abc".indexOf("d")返回-1,使用时务必判空或检查返回值是否为-1 - 如需忽略大小写,可先用
toLowerCase()或toUpperCase()统一转换再查
替代方案:正则表达式(Pattern / Matcher)
当需要更复杂的匹配(如查找所有匹配、带条件、捕获组等),可用 Pattern 和 Matcher:
-
Pattern.compile("a+").matcher("aaabaa").find()配合matcher.start()获取每次匹配起始索引 - 适合多匹配、模糊匹配、边界控制等场景,但性能和写法比
indexOf重
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











