gpt4 book ai didi

Java 文本过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:50 25 4
gpt4 key购买 nike

对于一个项目,我需要开发一个 Java 应用程序来检查多个部分的字符串:

  1. 首先检查文本是否包含指定列表中的单词。
    时刻提醒:
    • 输入可能包含列表中的单词,但可以在字符之间添加空格或特殊字符以绕过过滤器。在这种情况下,过滤器需要将单词过滤为。
    • 这个词有可能被放在另一个词中。如果指定了列出之前和/或之后过滤器,则需要过滤该单词。
  2. 其次是过滤包含 IP 地址的文本。
    时刻提醒:
    • 输入可能包含使用特殊字符或空格来绕过过滤器的 IP。在这种情况下,过滤器需要过滤 IP 地址。
  3. 第三个是从文本中过滤网址。
    在此还要提醒大家的是:
    • 输入可能包含使用特殊字符或空格来绕过过滤器的网址。在这种情况下,过滤器需要将网址过滤到。

我通过检查空格和特殊字符测试了一些想法,但是处理传入的文本需要花费大量的工作。

我尝试过的示例:

public static boolean validateBericht(String msg) {
return validateTransformedBericht(msg);
}

private static boolean validateTransformedBericht(String bericht) {
if (bericht.length() != 0) {
for (String woord : ChatControlList.getChatControlList()
.getWoordenLijst()) {
for (int i = 0; i < (bericht.length() - (woord.length() - 1)); i++) {
if (i == 0 || inTekenLijst(bericht.charAt(i))) {
int index = 0;
for (int j = i; j < bericht.length(); j++) {
if (inTekenLijst(bericht.charAt(j))) {
} else if (bericht.charAt(j) == woord.charAt(index)) {
index++;
} else {
break;
}
if (index == woord.length()) {
if ((bericht.length() - 1) == j
|| inTekenLijst(bericht.charAt(index))) {
return true;
} else {
break;
}
}
}
}
}
}
}
return false;
}

private static boolean inTekenLijst(char teken) {
for (String tekenUitLijst : ChatControlList.getChatControlList()
.getSpecialeTekens()) {
if (tekenUitLijst.equalsIgnoreCase(String.valueOf(teken))
|| String.valueOf(teken).equalsIgnoreCase(" ")) {
return true;
}
}
return false;
}

有人知道如何通过良好的工作解决方案来解决这个问题吗?

危害

最佳答案

在这种情况下,您应该创建两个方法:

  • 首先测试字符串是否与搜索到的单词匹配
  • 第二个用于测试地址类型。

然后您可以在代码中随意使用它们。

  1. 检查字符串是否与搜索到的单词匹配的代码:

      String line = "the wor ld is wonderful";
    String search = "wor ld";
    String pattern = "(" + search + ")";

    Pattern r = Pattern.compile(pattern);

    Matcher m = r.matcher(line);

    if (m.find()) {
    System.out.println("Found value: " + m.group(0));
    } else {
    System.out.println("NO MATCH");
    }
  2. 测试给定地址并判断它是否是 IP 地址的方法;网址或无效地址:

    public static String testAddress(String address) {
    if (address.matches("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$")) {
    return "IP Address";
    } else if (address.matches("^(http\\:\\/\\/|https\\:\\/\\/)?([a-z0-9][a-z0-9\\-]*\\.)+[a-z0-9][a-z0-9\\-]*$")) {
    return "Web address";
    } else {
    return "invalid input";
    }
    }

这是一个 Working Ideone Test

关于Java 文本过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32669862/

25 4 0
文章推荐: javascript - 重新启动 Sencha Touch 应用程序
文章推荐: javascript - 如何显示模态窗口以重叠iframe?
文章推荐: android - 打包错误 : Command "adb.exe -s emulator-5554 pull/system/bin/app_process" failed. 退出代码:1
文章推荐: html - 创建相同高度的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com