gpt4 book ai didi

java - 无法让 Matcher.replaceAll 正常工作

转载 作者:行者123 更新时间:2023-11-29 03:35:52 24 4
gpt4 key购买 nike

我在模式替换方面遇到了一些奇怪的问题。

我有这两种模式:

private static final Pattern CODE_ANY = Pattern.compile("&[0-9a-fk-or]");
private static final Pattern CODE_BLACK = Pattern.compile(ChatColour.BLACK.toString());

ChatColour.BLACK.toString() 返回“&0”

接下来,我有这段代码:

public static String Strip(String message)
{
while (true)
{
Matcher matcher = CODE_ANY.matcher(message);
if (!matcher.matches())
break;
message = matcher.replaceAll("");
}
return message;
}

我尝试了几种不同的方法,但没有任何东西被替换。初始版本只是一个接一个地调用每个 CODE_xxx 模式,但用户通过加倍使用 & 符号来绕过它。

我只是不明白为什么这没有删除任何东西..我知道它肯定会被调用,因为我已将调试消息打印到控制台以进行检查。

//莫腾

最佳答案

matches()检查完整的输入字符串是否匹配模式,而find()检查是否可以在输入字符串的某处找到 模式。因此,我会将您的方法重写为:

public static String strip(String message) // lowercase strip due to Java naming conventions
{
Matcher matcher = CODE_ANY.matcher(message);
if (matcher.find())
message = matcher.replaceAll("");
return message;
}

刚刚意识到,这可以用一个衬里来完成:

public static String strip(String message) {
return message.replaceAll("&[0-9a-fk-or]", "");
}

使用 replaceAll()方法,您不需要预编译模式,但您可以将正则表达式提取到 String 类型的最终字段。

关于java - 无法让 Matcher.replaceAll 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604050/

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