gpt4 book ai didi

java - 从模式数组中查找并运行一个方法

转载 作者:行者123 更新时间:2023-11-30 09:11:22 26 4
gpt4 key购买 nike

嘿,我有点麻烦。

我需要检查字符串中大约 200 个正则表达式模式,并根据找到的模式运行一个方法。

意思是(半伪):

Pattern pattern = Pattern.compile([Array of patterns]);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {

Pattern p = matcher.pattern();
p.runSomeMethod();
}

很明显,上面的代码不是这样做的,只是想清楚我需要什么。

我的问题是,要实现我必须扩展 StringPattern,真正的问题是它们都是 final 所以我不能那样做。

基本上我想做的是在一个字符串中寻找多个模式,当只有 1 个适合时,并根据所选模式运行一个过程,试图避免一个巨大的 switch case 我虽然我只是实现多个类,该模式将返回我的类的一个对象,我将只运行它的方法。

有什么想法可以实现吗?我发现关于这个主题的信息很少。

最佳答案

实现这一点的一种方法是结合使用策略模式和匿名内部类,如下所示:

private Map<Pattern, Runnable> patterns;
{
{
patterns = new LinkedHashMap<Pattern, Runnable>();
patterns.put(Pattern.compile("\\w+"), new Runnable() { public void run() { System.out.println("word"); } });
patterns.put(Pattern.compile("\\d+"), new Runnable() { public void run() { System.out.println("number"); } });
}
}

public void matchAndExecute(String str) {

Iterator<Entry<Pattern, Runnable>> it = patterns.entrySet().iterator();
while (it.hasNext()) {
Entry<Pattern, Runnable> pattern = it.next();
if (pattern.getKey().matcher(str).matches()) {
pattern.getValue().run();
}
}
}

关于java - 从模式数组中查找并运行一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22126134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com