发布于2026-05-20 阅读(0)
扫一扫,手机访问
在Ja va里处理字符串时,经常需要快速定位某个特定字符。这时候,String.indexOf() 方法往往是最高效、最直接的选择。它返回一个int类型的索引值:如果找到了目标字符,就返回其首次出现的位置(从0开始计数);如果没找到,则返回 -1。整个过程无需手动遍历,也无需动用正则表达式,一行代码就能搞定。

最基本的调用方式是 str.indexOf(ch),这里的 ch 必须是 char 类型,比如 'a'、' ' 或 '@'。
"Abc".indexOf('a') 会返回 -1,而 "Abc".indexOf('A') 则返回 0。"" 调用该方法,结果始终是 -1。如果想跳过字符串的开头部分,或者寻找字符第二次出现的位置,可以使用重载方法 str.indexOf(ch, fromIndex)。
fromIndex 参数指定了搜索的起始下标(包含该位置)。它必须大于等于0;如果大于等于字符串长度,方法会直接返回 -1。'e':先通过 int first = s.indexOf('e'); 找到第一次出现的位置,然后调用 int second = s.indexOf('e', first + 1); 从第一次出现之后开始找。first 是否不等于 -1。这个方法语法简单,但有些语义上的细节容易出错:
"a")。这实际上会调用 indexOf(String) 重载,虽然功能相似,但性能略低,且容易造成混淆。"hello".indexOf('h') 返回的是 0,而不是 1。null,调用该方法会抛出 NullPointerException。因此,使用前的判空检查是必要的。char 类型代表一个 UTF-16 编码单元,对于基本多文种平面(BMP)内的字符,定位是完全准确的。一个常见的需求是从邮箱地址中提取 @ 符号之前的部分。利用 indexOf() 可以轻松实现:
String email = "user@example.com";int atPos = email.indexOf('@');String user = (atPos != -1) ? email.substring(0, atPos) : "";
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8