java - 在 Java 泛型方法中使用正则表达式

标签 java regex generics

您好,我是在 java 中使用正则表达式作为泛型方法的新手。我对如何在 Java 中使用正则表达式作为泛型方法感到困惑。 一般来说,正则表达式将采用 String 类型,但我需要一个要求,它将接受所有数据类型,例如 intdoublefloat..... 下面是我的代码,它根据正则表达式和给定数据返回 truefalse 值。 但我的问题是它仅对 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/

相关文章:

c# - 在 2 个类 C# 之间共享一个方法

json - 在匹配 Go 中的底层类型时将 JSON 解码为接口(interface)变量

java - 当有两个 for() 循环时,第二个不起作用

java - Libgdx - 如何为每个部分的不同输入处理器拆分屏幕

java - 将对象内容复制到其他类型的其他对象

java - 字节数组[]

java - 正则表达式替换问题理解

正则表达式:删除包含 "help"等的行

asp.net - 识别 0.0 和 1.0 之间的小数的正则表达式

java - 通过 varargs 参数可能造成的堆污染