Java中indexOf()方法详解及其日常使用举例

 更新时间:2023年12月22日 11:22:38   作者:默 语  
这篇文章主要给大家介绍了关于Java中indexOf()方法详解及其日常使用举例的相关资料,indexOf()方法是JavaScript字符串的内置方法之一,它用于查找给定子字符串在原始字符串中第一次出现的位置,需要的朋友可以参考下

摘要:

 indexOf() 方法用于在字符串中查找指定子串,并返回第一个匹配项的索引。Java 提供了四种常用的查找方法,分别是 indexOf(String str)indexOf(String str, int startIndex)lastIndexOf(String str)lastIndexOf(String str, int startIndex)

Demo 理解: 

上面的示例代码展示了在字符串中使用 indexOf() 方法进行查找的示例。通过设置不同的起始位置,可以灵活地定位子串。

Java 中的 indexOf() 方法: 👀

indexOf() 方法用于在字符串中查找指定子串,并返回第一个匹配项的索引。它从指定的字符位置开始搜索,检查指定数量的字符位置。

在 Java 中,共有四种常用的查找方法:

  • int indexOf(String str): 返回第一次出现的指定子字符串在此字符串中的索引。
  • int indexOf(String str, int startIndex): 从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
  • int lastIndexOf(String str): 返回在此字符串中最右边出现的指定子字符串的索引。
  • int lastIndexOf(String str, int startIndex):此方法接收两个参数,第一个参数是要查找的子字符串 str,第二个参数是开始搜索的索引位置 startIndex。它会从指定的索引位置向后搜索,并返回最后一次出现指定子字符串的索引位置。如果在指定的索引位置之后没有找到子字符串,则返回 -1。如果子字符串为空字符串或者搜索索引超出了字符串的长度,则返回字符串的长度。

以下是一个示例代码:

String str = "Hello, World!";
int index = str.lastIndexOf("o", 7);
System.out.println(index); // 输出4

在以上示例代码中,我们首先创建了一个字符串 str,然后调用了 lastIndexOf 方法来查找最后一次出现字符 o 的位置,在字符串 str 中从索引 0 到索引 7 的范围内进行查找,即 "Hello, ",结果为 4。

indexOf 使用示例:

package com.example.democrud.democurd.controller;

public class IndexOfExample {

    public static void main(String[] args) {

        String s = "yanwenchaoyan";

        // 从头开始查找是否存在指定的字符
        // 不存在则返回 -1, 存在则返回对应的下标位置
        int le = s.indexOf("l");
        int les = s.indexOf("n");
        System.out.println("yanwenchao 的不存在则为:" + le);
        System.out.println("yanwenchao 的存在的下标为:" + les);

        System.out.println("---------------------------------------");

        // 从第四个字符位置开始往后继续查找,包含当前位置,前面的就过滤掉
        int i = s.indexOf("y", 3);
        System.out.println("yanwenchao 的下标位置是:" + i);

        System.out.println("---------------------------------------");

        String s1 = "01234560123456";
        int ls = s1.indexOf("123");
        int lss = s1.lastIndexOf("123");
        //反方向
        int lsss = s1.lastIndexOf("123", 4);

        System.out.println("下标地址:" + ls);
        System.out.println("下标地址:" + lss);
        System.out.println("下标地址:" + lsss);

        System.out.println("---------------------------------------");

    }
}

运行结果:

yanwenchao 的不存在则为:-1
yanwenchao 的存在的下标为:2
---------------------------------------
yanwenchao 的下标位置是:10
---------------------------------------
下标地址:1
下标地址:8
下标地址:1
---------------------------------------

注意:指定了索引位置之后,将从指定索引位置开始进行查询,返回相应的下标值。例如,如果搜索字符 “y”,则返回字符 “y” 第一次出现的位置。

获取动态数组元素的索引:

如果我们想获得最后一次出现 “Runoob” 的位置,我们可以使用 lastIndexOf() 方法。

public static void main(String[] args){

    // 创建一个数组
    ArrayList<String> sites = new ArrayList<>();

    sites.add("Google");
    sites.add("Runoob");
    sites.add("Taobao");
    System.out.println("网站列表: " + sites);

    // 查找位置索引值为 "Runoob" 的元素
    // 如果存在,则返回对应的下标位置(下标从 0 开始)
    // 例如:Google 对应下标 0, Runoob 对应下标 1, Taobao 对应下标 2
    // 所以返回 1
    int position1 = sites.indexOf("Runoob");
    System.out.println("Runoob 的索引位置: " + position1);

    // 查找位置索引值为 "Weibo" 的元素
    // 不存在,则返回 -1
    int position2 = sites.indexOf("Weibo");
    System.out.println("Weibo 的索引位置: " + position2);
}

运行结果:

网站列表: [Google, Runoob, Taobao]
Runoob 的索引位置: 1
Weibo 的索引位置: -1

lastIndexOf 方法

lastIndexOf() 方法返回指定元素在动态数组中最后一次出现的位置。

public static void main(String[] args){

    // 创建一个数组
    ArrayList<String> sites = new ArrayList<>();
    // "Runoob" 存在两次,下面代码会得到最后一次出现的位置
    sites.add("Google");
    sites.add("Runoob");
    sites.add("Taobao");
    sites.add("Runoob");
    System.out.println("网站列表: " + sites);

    // 获取 "Runoob" 最后一次出现的位置
    int position1 = sites.lastIndexOf("Runoob");
    System.out.println("Runoob 最后出现的位置: " + position1);

    // "Wiki" 不在数组中,返回 -1
    int position2 = sites.lastIndexOf("Wiki");
    System.out.println("Wiki 最后出现的位置: " + position2);
}

总结:

Java中的indexOf()方法是用于在字符串中查找指定子串的常用方法。主要有以下几个用法:

  • int indexOf(String str):从头开始查找指定子串在字符串中第一次出现的位置,返回相应的索引值。
  • int indexOf(String str, int startIndex):从指定的索引位置开始往后查找,返回第一次出现的位置。
  • int lastIndexOf(String str):返回指定子字符串在字符串中最后一次出现的位置。
  • int lastIndexOf(String str, int startIndex):从指定的索引位置开始反向查找,返回最后一次出现的位置。

在使用这些方法时,需要注意:

  • 如果找到指定子串,返回对应的索引位置(索引从0开始)。
  • 如果未找到指定子串,返回-1。

此外,指定了索引位置后,从该位置开始进行查找。如果子串为空字符串或搜索索引超出了字符串的长度,将返回相应的长度值。

indexOf()方法在字符串操作中非常实用,可以帮助定位特定字符或子串的位置,为进一步的处理提供了便利。

到此这篇关于Java中indexOf()方法详解及其日常使用举例的文章就介绍到这了,更多相关Java indexOf()方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA使用quartz添加定时任务,并依赖注入对象操作

    JAVA使用quartz添加定时任务,并依赖注入对象操作

    这篇文章主要介绍了JAVA使用quartz添加定时任务,并依赖注入对象操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringMVC 中文乱码的解决方案

    SpringMVC 中文乱码的解决方案

    这篇文章主要介绍了SpringMVC 中文乱码的解决方案,帮助大家更好的理解和学习使用SpringMVC,感兴趣的朋友可以了解下
    2021-04-04
  • Java实现JDBC向数据库批量插入

    Java实现JDBC向数据库批量插入

    在Java项目中可能会出现大量向数据库中插入的情况,本文主要介绍了Java实现JDBC向数据库批量插入,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Java中覆盖finalize()方法实例代码

    Java中覆盖finalize()方法实例代码

    这篇文章主要介绍了Java中覆盖finalize()方法实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Java的RocketMq水平扩展及负载均衡详解

    Java的RocketMq水平扩展及负载均衡详解

    这篇文章主要介绍了Java的RocketMq水平扩展及负载均衡详解,RocketMQ是一个分布式具有高度可扩展性的消息中间件,本文旨在探索在broker端,生产端,以及消费端是如何做到横向扩展以及负载均衡的,需要的朋友可以参考下
    2024-01-01
  • SpringBoot基于Shiro处理ajax请求代码实例

    SpringBoot基于Shiro处理ajax请求代码实例

    这篇文章主要介绍了SpringBoot基于Shiro处理ajax请求代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java深入分析讲解反射机制

    Java深入分析讲解反射机制

    反射是框架的灵魂,Java框架底层都是用反射机制+xml配置等来实现的,本文将通过示例详细讲解Java中的反射机制,感兴趣的小伙伴可以跟随小编学习一下
    2022-06-06
  • Springboot中登录后关于cookie和session拦截问题的案例分析

    Springboot中登录后关于cookie和session拦截问题的案例分析

    这篇文章主要介绍了Springboot中登录后关于cookie和session拦截案例,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java 详解包装类Integer与int有哪些共通和不同

    Java 详解包装类Integer与int有哪些共通和不同

    这篇文章主要介绍的是 Java中int和Integer的区别,Java 是一种强数据类型的语言,因此所有的属性必须有一个数据类型,下面文章基于Java详细int和Integer有何区别,需要的朋友可以参考一下
    2022-04-04
  • RocketMQ中的NameServer详细解析

    RocketMQ中的NameServer详细解析

    这篇文章主要介绍了RocketMQ中的NameServer详细解析,NameServer是一个非常简单的Topic路由注册中心,支持Broker的动态注册与发现,因此不能保证NameServer的一致性,需要的朋友可以参考下
    2024-01-01

最新评论