如何解析包含' +'的字符串符号

时间:2015-07-24 01:35:58

标签: java

我有一个有数字的字符串。

我有这样的代码,

    String tempStr = "+123";
    NumberFormat numformat = NumberFormat.getNumberInstance();
    numformat.setParseIntegerOnly(true);
    try {
        int ageInDays = Integer.parseInt(tempStr);
        System.out.println("the age in days "+ageInDays);
    } catch (NumberFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

对于带有否定符号的数字,它工作得很好。但我不能用' +'符号。它抛出NumberFormatException。

那么如何解析数字' +'字符串中的符号?

2 个答案:

答案 0 :(得分:4)

如果您使用的是Java 7或更高版本,我建议使用java.lang.Long;或java.lang.Integer; (如果您确定必须解析整数)。

适用于两种情况。

稍后编辑: 我没有看到你使用的是Integer.parseInt();

因此我假设您使用Java 6或更低版本。

在这种情况下,请尝试在Integer.parseInt(tempStr);行之前调用以下方法,以便在 + 存在时将其删除:

private static String removePlusSignIfExists(String numberAsString) {
    if(numberAsString == null || numberAsString.length() == 0){
        return numberAsString;
    }

    if(numberAsString.charAt(0) == '+'){
        return numberAsString.substring(1, numberAsString.length());
    } else {
        return numberAsString;
    }
}

答案 1 :(得分:2)

此功能基本上将“+”替换为“”,空白字符串,因此“+ 12 + 3”将返回 123 即可。

public int parseInt(String text) {
    return Integer.parseInt(text.replaceAll("+", ""));
}

如何使用它的一个例子是

System.out.println(parseInt("+123")); //Returns 123

我希望这有帮助!