首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤用户输入,使其不包含特定字符

过滤用户输入,使其不包含特定字符
EN

Code Review用户
提问于 2017-08-28 19:19:14
回答 1查看 322关注 0票数 2

我需要过滤来自用户的输入,这样才不会有桩柱标志(柱标)字符。以下方法筛选来自用户的输入

代码语言:javascript
复制
public String filterInput(String userInput) {
    StringBuilder sBuilder = new StringBuilder();

    for (char character : userInput.toCharArray()) {
        if (checkCharacter(character)) {
            sBuilder.append(character);
        }
    }
    return sBuilder.toString();
}

public boolean checkCharacter(char charToCheck) {
    return charToCheck != 182;
}

filterInput被传递一个包含用户输入的字符串,该字符串是从Scanner(System.in)获取的,用户输入之前没有进行过滤。

我担心的是,代码是否写得很好,还是仍然有一种方式可以让用户编写Pilcrow符号,当字符串被拆分为字符时,它可以绕过checkCharacter方法返回true,从而有效地将禁止字符注入到我的应用程序中?

EN

回答 1

Code Review用户

回答已采纳

发布于 2017-08-28 20:13:07

你的代码在我看来是正确和安全的。不过,我会把它简化为:

代码语言:javascript
复制
public static String filterInput(String userInput) {
    return userInput.replace("\u00b6" /* Pilcrow sign */, "");
}

当您只需要一个静态函数时,两个公共函数就显得过分了。(如果您打算通过重写子类中的checkCharacter()来配置过滤器,那么我建议更改为更灵活的设计,将顽皮字符指定为参数。)

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/174249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档