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

标签 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);

一些东西并不过分,特别是对于具有更多模式的较长字符串。

最佳答案

尝试使用正则表达式。

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
}

关于java - 获取字符串中多个字符串之一的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172974/

相关文章:

java - Tomcat java servlet - 如何跟踪登录的用户?

python - Python 中的变量插值

python - Pyplot 在图形矩阵上映射 <string,number> 对

c - 从缓冲区中提取数字和字符作为一个完整的字符串

javascript - IndexOf 无法正确处理包含数组的对象

java - 将通用类型传递到indexOf方法JAVA

javascript - 即使存在重复项,也仅从 JS 数组中删除一项

java - JSOUP HTML 解析器

java - 使用 (Spring) ThreadPoolTask​​Executor 的多线程应用程序

java - 如何使用 Java 执行多个 UNIX 命令并捕获单个输出或错误(如果有)