【问题标题】:Clear a String with Java Pattern when it doesn't match不匹配时清除带有 Java 模式的字符串
【发布时间】:2015-10-16 11:35:04
【问题描述】:

我有一个应用程序,其中所有输入都由白名单验证(这是一个正则表达式)。 当输入与正则表达式不匹配时,应用程序会向用户抛出错误消息,他应该输入另一个值。

现在,当他与正则表达式不匹配时,我必须能够过滤输入。而且我不知道如何正确地做到这一点。

这就是我想做的:

String inputStr = ... //input value

Pattern p = getValidateurPattern();
if (!p.matcher(inputStr).matches()) {
    //a function which return a inputStr such as p.matcher(inputStr).matches() will be true
    inputStr = clearInputString(p, inputStr);
}

不幸的是,Pattern 对象是我唯一需要知道的授权值。

有没有办法正确解决这个问题?

谢谢

【问题讨论】:

  • 这取决于您输入值的方式。输入是由控制台(例如扫描仪)还是由任何 GUI 发生的
  • 感谢您的评论。考虑输入值只是一个必须清理的字符串。 inputStr 来自客户端应用程序,我说的函数在服务器上。
  • 您可以生成并尝试随机字符串,直到其中一个被模式接受。说真的,如果对模式没有预定义的限制,就没有合理的方法。

标签: java regex string


【解决方案1】:

尝试添加这个。

Boolean b=Arrays.asList(arrayname).contains("String to compare");

这里的 Arrayname 指定了数组中的值列表,可以用来与我们的字符串进行比较。

它返回布尔值。 如果数组包含搜索到的字符串,则返回 true,否则返回 false。 稍后您可以使用 true 条件来完成您需要的任务。

【讨论】:

  • 不幸的是,Pattern 对象是我唯一需要知道的授权值
  • 将模式存储在数组中并进行比较
猜你喜欢
  • 1970-01-01
  • 2011-12-17
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多