Java中的字符串是非常常用的数据类型,而其中的indexOf
方法则是在字符串中查找指定字符或子字符串第一次出现的位置的最常用的方法之一。在使用indexOf
方法时,返回的值会给大家带来很多疑惑,本篇文章将详细阐述Java indexOf
方法返回值相关的问题。
一、方法概述
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
public int indexOf(int ch)
public int indexOf(int ch, int fromIndex)
笔者在这里先介绍一下Java的indexOf
方法,这个方法用于查找一个字符串在另一个字符串中第一次出现的位置。indexOf
方法支持四种重载,分别的区别即参数不同,具体内容如上面代码所示。
二、基础知识回顾
其实在使用indexOf
方法时,返回的值是查找到的第一个字符或者字符串所在的位置。例如,在下面这个字符串中,如果我们想查找“world”这个字符串所在的位置:
String str = "Hello world";
int index = str.indexOf("world");
System.out.println(index);
上面结果输出的位置是6,这个位置表示的就是第一个“w”所在的位置。
三、返回值为-1的情况
当indexOf
方法未能找到需要查找的字符或字符串时,返回值就变成-1了。例如,在下面这个字符串中,如果我们想查找“Java”这个字符串所在的位置:
String str = "Welcome to Java";
int index = str.indexOf("Java");
System.out.println(index);
因为“Java”这个字符串在原始字符串中并不存在,所以这个方法返回值为-1(如果要检查字符串是否包含另一个字符或字符串,可以使用contains
方法)。
四、多次出现时返回值
当字符串中有多个需要查找的字符或字符串时,indexOf
方法只会返回第一个所在位置的索引。例如,在下面这个字符串中,如果我们想查找“o”这个字符所在的位置:
String str = "Today is a good day";
int index = str.indexOf("o");
System.out.println(index);
这个方法的返回值是1,代表字符串第一个“o”的位置。而这里字符串中仍然存在两个“o”,但返回值只展示了第一个出现“o”的位置。如果想查找最后一个“o”所在的位置,可以使用lastIndexOf
方法。
五、利用indexOf
方法查找正则表达式
indexOf
方法也可以用于查找正则表达式。考虑到字符串中含有多个需要查找的字符串的情况,正则表达式对于这种需求是非常适用的。例如,在下面这个字符串中,如果我们想查找两个字符e之间的所有内容:
String str = "This is a test string.";
int index1 = str.indexOf("e");
int index2 = str.indexOf("e", index1 + 1);
String substring = str.substring(index1 + 1, index2);
System.out.println(substring);
这个方法的返回值为"is a t",因为正则搜索包括了“e”,所以字符串结果是不包括“e”这个字符的。
六、结尾注意事项
最后,当在Java中使用indexOf
方法时,需要根据实际需求对其返回值进行检查。有时,返回值可能是-1,这意味着要查找的字符或字符串不存在于源字符串中。在许多情况下,需要检查其他位置是否支持结果,包括最后一个结果。
要看清问题,不要忽视一些必要的检查。否则,结果将导致意想不到的错误。掌握Java基础知识,多试试都是好事,也可以参考JDK相关说明,尽可能充分发掘其功能。