您好,我是在 java 中使用正则表达式作为泛型方法的新手。我对如何在 Java 中使用正则表达式作为泛型方法感到困惑。
一般来说,正则表达式将采用 String 类型,但我需要一个要求,它将接受所有数据类型,例如 int
、double
、float
.....
下面是我的代码,它根据正则表达式和给定数据返回 true
或 false
值。
但我的问题是它仅对 String
值有效。我需要它的 Int 格式(如通用方法)。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringValidator {
public boolean stringMultiFormat(String str, String regex) {
boolean isValid = false;
CharSequence inputStr = str;
// Make the comparison case-insensitive.
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
isValid = true;
System.out.println(isValid);
} else {
System.out.println(isValid);
}
return isValid;
}
public static void main(String[] args) {
StringValidator aiov = new StringValidator();
String num = "^\\s*(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)\\s*$";
if (aiov.stringMultiFormat("(650)-055-2345", num)) {
System.out.println("Given number is Valid Mobile Number");
} else {
System.out.println("Given number is Invalid Mobile Number");
}
}
}
提前致谢!
最佳答案
有两种方法可以让 stringMultiFormat
接受多种格式。第一个是将输入参数从 String
更改为 Object
。在 Java 中,所有类都继承自 Object
,这意味着 Object
参数可以接受许多类输入。然后您可以使用强制转换,例如
public boolean stringMultiFormat(Object var, String regex) {
if (var instanceof String)
{ String str = (String) var; }
}
或者您可以使用方法overloading .
关于java - 在 Java 泛型方法中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31513710/