在开发过程中我们经常会用到String的indexOf方法,这个方法是用来获取某个特定字符在指定字符串中第一次出现的位置,通常用来判断是否包含或者用来进行字符串的截取,有些时候我们不仅需要获取这个特定字符第一次出现的位置,可能还需要获取第二次、第三次甚至是第四次出现的位置。
怎么做呢?

public static void main(String[] args) {//指定字符串String str = "welcome to china";//查找字符  o  出现的所有位置Pattern pattern = Pattern.compile("o");Matcher findMatcher = pattern.matcher(str);while(findMatcher.find()) {System.out.println(findMatcher.start());}}


可以看下,结果是没有问题的。
封装一下就可以使用了(方法的第二个参数是需要定位的字符或者字符串,如果是字符,传入的时候使用String.valueOf()方法转为String类型):

 /*** @param data 指定字符串* @param str 需要定位的特殊字符或者字符串* @param num   第n次出现* @return  第n次出现的位置索引*/public static int getIndexOf(String data,String str,int num){Pattern pattern = Pattern.compile(str);Matcher findMatcher = pattern.matcher(data);//标记遍历字符串的位置int indexNum=0;while(findMatcher.find()) {indexNum++;if(indexNum==num){break;}}System.out.println("字符或者字符串"+str+"第"+num+"次出现的位置为:"+findMatcher.start());return findMatcher.start();}

调用:

 public static void main(String[] args) {//指定字符串String str = "welcome to china";//需要定位的可以是字符也可以是字符串,本示例是用的字符'o',需使用String.valueOf()方法转为字符串getIndexOf(str, String.valueOf('o'), 1);}

试看结果:
查询o第一次出现的位置:

查询o第二次出现的位置:

复制我写的封装方法,放到项目的共通里面就可以随处调用了,我是在main方法中测试的,你用到的时候可能需要把方法的static关键字去掉。

Java获取某个字符在指定字符串中出现的第N次的位置相关推荐

  1. java 截取指定字母 重复_用JAVA编程获取两个指定字符串中的最大相同子串

    /** * 编程获取两个指定字符串中的最大相同子串 * 如:str1="asdafghjka", str2="aaasdfg" 他们的最大子串为"as ...

  2. C++ 删除指定字符串中的某些字符

    C++ 删除指定字符串中的某些字符 题目 输入URL前缀和后缀,删除字符串中的",/",把URL拼接在一起且后边有"/". 用例: 输入:/abhdsjvf/, ...

  3. 统计并输出某给定字符在给定字符串中出现的次数_查找常用字符

    给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表.例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 ...

  4. 字符串匹配:字符串中查找某子串

    字符串匹配:字符串中查找某子串 需求 具体算法 常规方法 程序 KMP算法 程序 后续 需求 我们在平时的软件开发,尤其是嵌入式开发,字符串匹配是非常重要的一个算法.而目前常用的字符串匹配算法有很多, ...

  5. java.lang.IllegalArgumentException: 字符[_]在域名中永远无效。 at

    [http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将 ...

  6. 关于VS2017调试时,字符数组显示字符串中的字符无效问题

    关于VS2017调试时,字符数组显示"字符串中的字符无效"问题 1.如果已经分配过内存,可能是越界导致的指令错误. 2.可能是字符数组成员的值超出了ASCII码表示范围,导致字符无 ...

  7. 本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。

    7-2 统计字符出现次数 输入样例: 输入第一行给出一个以回车结束的字符串(少于80个字符):第二行输入一个字符. 输出样例: 在一行中输出给定字符在给定字符串中出现的次数. 输入样例: progra ...

  8. 2021-12-27 Java String contains() 方法用于判断字符串中是否包含指定的字符或字符串。用.toLowerCase().contains忽视大小写。

    一.public boolean contains(CharSequence chars) contains() 方法用于判断字符串中是否包含指定的字符或字符串. 二.返回值        如果包含指 ...

  9. java截取指定字符串中的某段字符

    利用字符串的substring函数来进行截取. 其中,substring函数有两个参数: 1.第一个参数是开始截取的字符位置.(从0开始) 2.第二个参数是结束字符的位置+1.(从0开始) index ...

最新文章

  1. LeetCode集锦(十) - 第28题 Implement StrStr
  2. 信息管理(Information Management)
  3. 安卓中关于dialog.builder问题
  4. js 定时网页点击_JS的小乐趣:轻松完成打地鼠游戏
  5. maven命令行创建project
  6. tkinter的GUI设计:界面与逻辑分离(三)-- 多页面
  7. linux中退格出现乱码,SSH中的SQL命令按退格键出现乱码的问题解决
  8. 【nginx】【小记】泛解析大量域名的情况下 将不带www的域名,301到与之对应的www前缀的域名
  9. Android 驱动(2)---MTKAndroid添加驱动模块
  10. 3月30日见!荣耀30S外观“偷跑”:经典蝶羽纹理设计
  11. Android批量图片加载经典系列——使用二级缓存、异步网络负载形象
  12. 写出常用的5个linux命令 并解释,【PHP面试题】写出尽可能多的Linux命令。
  13. html中加入标题居中,在html标题标记中居中的div元素
  14. 嵌入式软件开发成功的 3 个要素
  15. php 正则不贪婪,正则表达式之 贪婪与非贪婪模式详解(概述)
  16. 鼠标滑轮将物体放大缩小
  17. python中的命令,python学习——python中命令行
  18. 如何用C++开发STM32?
  19. 华师大 OJ 3040
  20. 通信原理 单、双极性码的归零和非归零01等概下的波形和功率谱密度的matlab实现

热门文章

  1. 帝国CMS7.5仿《六皮游戏网》源码/手游门户网站模板/手机游戏下载模板
  2. Nvidia GTC China 19 keynote
  3. Webapp答题之JavaScript篇
  4. IOS开发callkit(call directory extension)勘误
  5. android65535错误实现,Android 解决65535的限制(官网推荐方法)
  6. where 1=1 是什么意思
  7. centos7.2系统优化
  8. 阿里暑期实习c\c++研发工程师一面经历
  9. 博客系统知多少:揭秘那些不为人知的学问(一)
  10. mtk电池电量与充电电流修改