如何检查传入的String是java中的哪种类型?

时间:2016-06-06 05:04:15

标签: java string

我想检查传入的字符串是哪种类型。

这样的事情:

public void checkType(String str)
{
    if(str is Integer){
        //do Integer stuff
    }
    if(str is Float){
        //do Float stuff
    }
    if(str is Boolean){
        //do Boolean stuff
    }
    if(str is Double){
        //do Double stuff
    }
}

更好的方法是什么?

2 个答案:

答案 0 :(得分:0)

最后,我达成了解决方案。对于Integer和Float,我使用了Java Regular表达式。

像这样:

  1. For Integer:

    String intRegex = "[0-9]+";
    if (inputString.matches(intRegex)) {
        //do Integer stuff
    }
    
  2. For Float:

    String floatRegex = "^([+-]?\\d*\\.?\\d*)$"; 
    if (inputString.matches(floatRegex)) {
        //do Float stuff
    }
    
  3. 我认为这也是识别String是Integer还是Float类型的好方法......?

    对于布尔的东西,我还没有找到好的解决方案。所以我只是使用了等于运算符。

    谢谢...

答案 1 :(得分:-1)

对于您要做的事情,最好将方法参数声明为Object类型而不是String,例如:

public void checkType(Object var) { 
    // ..... Your code .....
}

唯一的问题是您需要知道为特定方法代码提供的对象类型。您可以使用一行代码完成此操作,例如:

public void checkType(Object var) { 
    String varType = var.getClass().getSimpleName().toUpperCase();

    // ..... Your code .....
}

名为varType的声明的String变量将保存所提供的Object的名称。现在,您可以使用if / then或switch()方法确定实际提供的内容,例如:

public void checkType(Object var) { 
    String varType = var.getClass().getSimpleName().toUpperCase();

    switch (varType) {
        case "STRING":
            // do String stuff
            break;
        case "INTEGER":
            // do int stuff
            break;
        case "FLOAT":
            // do float stuff
            break;
        case "DOUBLE":
            // do double stuff
            break;
        case "BOOLEAN";
            // do boolean stuff
            break;
        case "JLABEL":
            // do JLabel stuff 
            // (any object can be supplied)
            break;
    }
}

我认为应该这样做(错误陷阱取决于你)。