获取一个字符串中多个字符串的第一次出现。

问题描述 投票:1回答:2

假设我有一个字符串ABCDEFGHIJKLMNOPQRSTUV。我想要一个内部字符串的索引:GHI、JKL或MNO;以先出现的为准。这就是我的情况。

String Alphabet = "ABCDEFGHIJKLMNOPQRSTUV";
int leastIndex = Alphabet.indexOf("GHI");
if( Alphabet.indexOf("JKL") < leastIndex ) leastIndex = Alphabet.indexOf("JKL");
if( Alphabet.indexOf("MNO") < leastIndex ) leastIndex = Alphabet.indexOf("MNO");
return leastIndex;

我的问题是是否有更好的方法来做这件事,比如:

int leastIndex = Alphabet.indexOf("GHI", "JKL", "MNO);

一些不那么过分的方法,特别是对于一个长字符串和更多的模式。

java string indexof
2个回答
0
投票

试试

int leastIndex = Math.min(Alphabet.indexOf("JKL"), Alphabet.indexOf("GHI")), Alphabet.indexOf("MNO"));

3
投票

用regex试试。

Pattern pattern = Pattern.compile("(GHI|JKL|MNO)");
Matcher matcher = pattern.matcher(string);

if (matcher.find()) {
    System.out.println(matcher.start()); // starting index
    System.out.println(matcher.group()); // matched group
}
© www.soinside.com 2019 - 2024. All rights reserved.