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

时间:2014-06-11 21:35:56

标签: java string indexof

假设我有一个字符串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);

某些不那么过分的东西,特别是带有更多图案的较长字符串。

2 个答案:

答案 0 :(得分:3)

尝试使用正则表达式。

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
}

答案 1 :(得分:1)

尝试

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