Java 检查字符串中的符号
我有一个由用户输入的字符串,它应该表示IP地址,如:123.234.12.8 但是,作为一个愚蠢的人,如果他们加入进来,有时会怎么样:12.234。1@.8 我已经了解了如何通过循环字符串并使用以下命令生成临时字符/整数来检查字符和符号:Java 检查字符串中的符号,java,error-handling,character,Java,Error Handling,Character,我有一个由用户输入的字符串,它应该表示IP地址,如:123.234.12.8 但是,作为一个愚蠢的人,如果他们加入进来,有时会怎么样:12.234。1@.8 我已经了解了如何通过循环字符串并使用以下命令生成临时字符/整数来检查字符和符号: tempChar = ipString.charAt(i); tempInt = Character.getNumericValue(tempChar); 我可以标记“a”或“q”,但我无法区分“.”符号和其他符号,如或“&”,因为它们都被赋予int值-1
tempChar = ipString.charAt(i);
tempInt = Character.getNumericValue(tempChar);
我可以标记“a”或“q”,但我无法区分“.”符号和其他符号,如或“&”,因为它们都被赋予int值-1
有没有一种现有的方法可以防止用户输入除“.”以外的任何符号,或者如果我做得不对,有人能给我指出正确的方向吗
编辑:这是Java语言。使用正则表达式。在这种情况下,您大概需要:
Pattern pattern = new Pattern.compile("(\\d{1,3}\\.){4}");
然后,您可以按如下方式使用:
boolean isMatch = pattern.matcher(ipString).matches;
就验证IP地址而言,这并不是非常精确——更好的答案是。但它确实以书面形式回答了你的问题:它排除了符号,除了符号。分隔数字。您应该使用正则表达式
String ipString = "123.234.12@8";
System.out.println(ipString.matches("^\\d+(\\.\\d+){3}$"));
仅当用户输入一系列数字和点时,才会返回true
公共布尔匹配字符串正则表达式:
说明此字符串是否与给定的正则表达式匹配
我相信这就是你想要的:
你能用一个正则表达式吗?你只是想验证这个数据,还是删除坏字符?不管怎样,正如@MadProgrammer所说,正则表达式在这里都是很好的选择。请澄清您的问题以获得更好的答案。对于或这可能是有用的,我正在尝试验证它,如果IP中有无效字符,我想请用户输入一个新字符。我不熟悉正则表达式,现在正在阅读oracle教程。