【问题标题】:checking String for symbols [duplicate]检查字符串中的符号[重复]
【发布时间】:2014-10-19 07:38:40
【问题描述】:

我有一个用户输入的字符串,它应该代表一个 IP 地址,例如:123.234.12.8 但作为一个愚蠢的人,如果他们有时会进入:12#.234.1@.8

我已经弄清楚如何通过遍历字符串并使用以下方法制作临时字符/整数来检查字符和符号:

tempChar = ipString.charAt(i);
tempInt = Character.getNumericValue(tempChar);

我可以标记“a”或“q”,但无法区分“.”符号和其他符号,例如 '#' 或 '&',因为它们都被赋予了 int 值 -1。

是否存在防止用户输入除“.”以外的任何符号的现有方法或者如果我做错了,有人可以指出我正确的方向吗?

编辑:这是在 Java 中。

【问题讨论】:

  • 你能用正则表达式吗?
  • 您只是想验证这些数据,还是也删除坏字符?无论哪种方式,正如@MadProgrammer 所说,正则表达式在这里都是不错的选择。请澄清您的问题以获得更好的答案。
  • 对于exampleexample
  • 我正在尝试验证它,如果 IP 中包含无效字符,我想要求用户输入一个新字符。我对正则表达式不熟悉,目前正在阅读oracle教程。

标签: java error-handling character


【解决方案1】:

使用正则表达式。在这种情况下,您需要(大致):

Pattern pattern = new Pattern.compile("(\\d{1,3}\\.){4}");

然后您可以按如下方式使用:

boolean isMatch = pattern.matcher(ipString).matches;

这在验证 IP 地址方面并不是非常精确——更好的答案是here。但它确实以书面形式回答了您的问题:它不包括“。”以外的符号。分隔数字。

【讨论】:

    【解决方案2】:

    你应该使用正则表达式。

        String ipString = "123.234.12@8";
        System.out.println(ipString.matches("^\\d+(\\.\\d+){3}$"));
    

    matches 仅当用户输入一系列数字和点时才会返回 true。

    公共布尔匹配(字符串正则表达式): 判断这个字符串是否匹配给定的正则表达式。

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2015-01-22
        • 2016-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多