如何将String转换为int?

"1234"  →  1234

当前回答

例如,这里有两种方法:

Integer x = Integer.valueOf(str);
// or
int y = Integer.parseInt(str);

这些方法略有不同:

valueOf返回java.lang.Integer的新实例或缓存实例parseInt返回基元int。

所有情况都是一样的:Short.valueOf/parseShort、Long.valueOf/parseLong等。

其他回答

可以通过七种方式实现:

import com.google.common.primitives.Ints;
import org.apache.commons.lang.math.NumberUtils;

String number = "999";

Ints.tryParse:int result=Ints.tryParse(数字);NumberUtils.createInteger:整数结果=NumberUtils.createInteger(数字);应用到内部的数字:int result=NumberUtils.toInt(数字);整数值:整数结果=Integer.valueOf(数字);整数.分析整数:int result=Integer.parseInt(数字);整数代码:int result=Integer.decode(数字);整数.分析未签名:int result=Integer.parseUnsignedInt(数字);

使用Integer.parseInt(yourString)。

记住以下几点:

整数.parseInt(“1”);//好啊

整数.parseInt(“-1”);//好啊

整数.parseInt(“+1”);//好啊

整数.parseInt(“1”);//异常(空格)

整数.parseInt(“2147483648”);//异常(整数限制为最大值2147483647)

整数.parseInt(“1.1”);//异常(.或,或任何不允许的)

Integer.parseInt(“”);//异常(不是0或其他)

只有一种类型的异常:NumberFormatException

使用不同的字符串输入尝试以下代码:

String a = "10";  
String a = "10ssda";  
String a = null; 
String a = "12102";

if(null != a) {
    try {
        int x = Integer.ParseInt(a.trim()); 
        Integer y = Integer.valueOf(a.trim());
        //  It will throw a NumberFormatException in case of invalid string like ("10ssda" or "123 212") so, put this code into try catch
    } catch(NumberFormatException ex) {
        // ex.getMessage();
    }
}

每当给定的字符串不包含Integer时,您都必须处理这种特殊情况。遗憾的是,标准的Java方法Integer::parseInt和Integer::valueOf抛出一个NumberFormatException来表示这种特殊情况。因此,您必须为流控制使用异常,这通常被认为是错误的编码样式。

在我看来,这种特殊情况应该通过返回一个空的Optional<Integer>来处理。由于Java不提供这种方法,我使用以下包装器:

private Optional<Integer> tryParseInteger(String string) {
    try {
        return Optional.of(Integer.valueOf(string));
    } catch (NumberFormatException e) {
        return Optional.empty();
    }
}

示例用法:

// prints "12"
System.out.println(tryParseInteger("12").map(i -> i.toString()).orElse("invalid"));
// prints "-1"
System.out.println(tryParseInteger("-1").map(i -> i.toString()).orElse("invalid"));
// prints "invalid"
System.out.println(tryParseInteger("ab").map(i -> i.toString()).orElse("invalid"));

虽然这仍然在内部使用流控制的异常,但使用代码变得非常干净。此外,您可以清楚地区分-1被解析为有效值的情况和无法解析无效字符串的情况。

我们可以使用Integer包装器类的parseInt(Stringstr)方法将String值转换为整数值。

例如:

String strValue = "12345";
Integer intValue = Integer.parseInt(strVal);

Integer类还提供了valueOf(Stringstr)方法:

String strValue = "12345";
Integer intValue = Integer.valueOf(strValue);

我们还可以使用NumberUtils实用程序类的toInt(StringstrValue)进行转换:

String strValue = "12345";
Integer intValue = NumberUtils.toInt(strValue);