Java indexOf method for multiple matches in String
我对indexOf方法有疑问。 我想在字符串中找到多个" X"的情况。
假设我的字符串是" x是x是x是x",我想在其所有索引位置中找到x。
但是,如何在多种情况下执行此操作? 使用indexOf甚至可能吗?
我做了int temp = str.indexOf('x');
它找到第一个x。 我试图做一个for循环,在此循环中我被初始化为字符串的长度,但是由于我不断发现第一个x,所以这没有用。
1 2 3 4 5 |
但这是行不通的。 我应该使用正则表达式吗? 因为我真的不知道如何使用正则表达式方法。
任何帮助将不胜感激,谢谢!
1 2 3 4 5 |
因此,您可以循环调用它,每次将
说明文件:
http://download.oracle.com/javase/6/docs/api/java/lang/String.html#indexOf(int,int)
您可以使用indexOf指定起始索引。因此,在循环中,存储了" x"的最后一个位置,然后使用该索引+ 1再次搜索。
这是Streams API的解决方案:
1 2 3 4 5 6 | String text ="Lets search for E ?"; final char key ="e".charAt(0); int[] indices = IntStream.range(0, text.length()) .filter(i -> text.charAt(i) == key) .toArray(); |
输出将是这样的:
1 2 | //1 //6 |
如果要在结果中添加大写字母,则需要使用以下命令更改
1 |
然后输出将是这样的:
1 2 3 | //1 //6 //16 |
另外,如果您只想使用结果或将其打印出来以进行快速测试,则可以使用
1 2 3 | IntStream.range(0, text.length()) .filter(i -> text.charAt(i) == key) .forEach(System.out::println); |
您想要在特定字符串中找到多个字符。是的,你可以这么做。您可以使用indexOf方法的重载版本。网站已详细描述了indexOf方法的所有重载版本。https://www.javaians.com/indexof-java/。您可以阅读有关Java indexOf方法的详细指南。
1 2 3 4 5 6 7 |