如何在交换机案例中匹配Java正则表达式?

时间:2017-11-14 14:35:45

标签: java regex

我想编写一个Java代码,以便对于任何以“Foo”开头的单词,做一些事情,对于以“Bar”开头的所有单词做其他事情。

for(String str: stringList) {
    switch (str) {
        case Foo*: // do something. then break.

        case Bar*: // do something else. break.
    }
}

现在,我如何在java中进行正则表达式匹配?

2 个答案:

答案 0 :(得分:4)

Switch语句需要字符串文字,目前不接受正则表达式模式。但是,只需使用ifelse

,您就可以轻松地实现所需的逻辑
for (String str: stringList) {
    if (str.matches("Foo.*")) {
        // do something
    }
    else if (str.matches("Bar.*")) {
        // do something else. break.
    }
}

我们可以使用String#startsWith或子字符串,但我使用matches来说明可以使用正则表达式模式。

Demo

答案 1 :(得分:1)

您无法使用switch语句执行此操作。使用if-else-if代替:

for(String str: stringList) {

    if(str.startsWith("Foo")){
        // do something
    } else if(str.startsWith("Bar")){
        // do something
    }
}