查找包含特定序列的字符索引

5
    if(input.contains("Angle ")) {
        input.charAt(?);
    }

基本上,你如何找到“Angle”后面的字符?用最简单的方式描述,你如何找到发现“Angle”的索引?


你是否搜索过如何在Java中查找子字符串的索引?这是一项基础的字符串操作。 - hrbrmstr
4个回答

3
您可以使用 indexOf 方法来查找输入字符串是否包含该字符串,以及其索引位置:
int pos = input.indexOf("Angle ");
if (pos >= 0) {
    ... // Substring is found at index pos
}

1

你尝试过indexOf()方法吗?

从Java文档中得知...

返回此字符串中指定子字符串第一次出现的索引。返回的整数是最小值k,使得:this.startsWith(str, k)为true。

因此,由于您知道字符串的长度,您可以将其添加到输入中,以查找“Angle”后面的字符。


不要忘记先检查indexOf()的返回值;盲目地将"Angle ".length()加上-1可能会导致错误的结果。 - Jason C

0
要查找紧跟在“Angle”后面的单词,您可以使用正则表达式:
String next = str.replaceAll(".*Angle (\\w+).*", "$1");

那么你就不必通过索引、迭代和大量的代码来弄脏自己了。


0

正如其他人所说的那样, 您可以使用indexOf来查找子字符串的位置。如果您有多个子字符串出现并且想要找到它们所有的位置,您可以使用带有起始位置参数的indexOf版本在当前出现后继续搜索,例如在haystack中查找所有needle的出现:

int index = 0;

while ((index = haystack.indexOf(needle, index)) != -1) {
    System.out.println("Found substring at " + index);
    index += needle.length();
} 

请注意,.contains(needle) 本质上与 .indexOf(needle) > -1 是相同的(事实上,这正是 contains() 的实现方式)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接