如何将 String 解析为具有默认值的 int?
How can I parse String to int with the default value?
我需要将字符串用户 ID 解析为整数,因为我使用 Integer.parseInt(String s)
但它 returns null/nil,如果有字符串 has/holds non-decimal/integer值,在这种情况下,我需要将默认整数值分配为 0
.
我试过了,但是 (? 0)
似乎不起作用,我不知道它的语法是否正确。
String userid = "user001";
int int_userid = Integer.parseInt(userid) ? 0;
如果存在空赋值,如何给整数赋默认值?
String userid 是 Web 服务函数调用的参数参数,因此我无法将其数据类型更新为整数。
该语法不适用于 Integer.parseInt()
,因为它会导致 NumberFormatException
你可以这样处理:
String userid = "user001";
int int_userid;
try {
int_userid = Integer.parseInt(userid);
} catch(NumberFormatException ex) {
int_userid = 0;
}
请注意您的变量名不符合Java代码约定
更好的解决方案是为此创建一个自己的方法,因为我相信你会不止一次需要它:
public static int parseToInt(String stringToParse, int defaultValue) {
try {
return Integer.parseInt(stringToParse);
} catch(NumberFormatException ex) {
return defaultValue; //Use default value if parsing failed
}
}
然后您只需使用此方法,例如:
int myParsedInt = parseToInt("user001", 0);
这里调用return默认值0
,因为"user001"无法解析。
如果从字符串中删除 "user" 并调用方法...
int myParsedInt = parseToInt("001", 0);
…然后解析将成功并且 return 1
因为 int 不能有前导零!
int int_userid;
try {
int_userid = Integer.parseInt(userid); // try to parse the given user id
} catch (Exception e) { // catch if any exception
int_userid = 0; // if exception assign a default value
}
String userid = "user001";
int int_userid = Integer.parseInt(userid) != null ? Integer.parseInt(userid) : 0);
你是说这个语法吗?
但是由于 int
永远不可能是 null
你必须改为:
String userid = "user001";
int int_userid;
try {
int_userid= Integer.parseInt(userid);
} catch (NumberFormatexception e) {
int_userid = 0;
}
您可以像这样将这种方式与 String::matches
一起使用:
String userid = "user001";
int int_userid = userid.matches("\d+") ? Integer.parseInt(userid) : 0;
您还可以对正值和负值使用 -?\d+
:
int int_userid = userid.matches("-?\d+") ? Integer.parseInt(userid) : 0;
我相信你可以通过以下方法达到你想要的效果:
public static int parseIntWithDefault(String s, int default) {
try {
return Integer.parseInt(s);
} catch(NumberFormatException e) {
return default;
}
}
现在只需分配:
int int_userid = parseIntWithDefault(userId, 0);
请记住,使用 Java
的人应该使用 Java 关于格式化代码的良好做法。 int_userid
绝对有待改进。
你可以用正则表达式试试这个方法。
public static int parseWithDefault(String s, int defaultVal) {
return s.matches("-?\d+") ? Integer.parseInt(s) : defaultVal;
}
您很可能已经在使用 apache.commons.lang3:
NumberUtils.toInt(str, 0);
这可能有点过度工程化,但您可以像这样使用 Guava 的 Ints.tryParse(String)
和 Java 8 的 Optionals:
int userId = Optional.ofNullable(Ints.tryParse("userid001")).orElse(0)
我需要将字符串用户 ID 解析为整数,因为我使用 Integer.parseInt(String s)
但它 returns null/nil,如果有字符串 has/holds non-decimal/integer值,在这种情况下,我需要将默认整数值分配为 0
.
我试过了,但是 (? 0)
似乎不起作用,我不知道它的语法是否正确。
String userid = "user001";
int int_userid = Integer.parseInt(userid) ? 0;
如果存在空赋值,如何给整数赋默认值?
String userid 是 Web 服务函数调用的参数参数,因此我无法将其数据类型更新为整数。
该语法不适用于 Integer.parseInt()
,因为它会导致 NumberFormatException
你可以这样处理:
String userid = "user001";
int int_userid;
try {
int_userid = Integer.parseInt(userid);
} catch(NumberFormatException ex) {
int_userid = 0;
}
请注意您的变量名不符合Java代码约定
更好的解决方案是为此创建一个自己的方法,因为我相信你会不止一次需要它:
public static int parseToInt(String stringToParse, int defaultValue) {
try {
return Integer.parseInt(stringToParse);
} catch(NumberFormatException ex) {
return defaultValue; //Use default value if parsing failed
}
}
然后您只需使用此方法,例如:
int myParsedInt = parseToInt("user001", 0);
这里调用return默认值0
,因为"user001"无法解析。
如果从字符串中删除 "user" 并调用方法...
int myParsedInt = parseToInt("001", 0);
…然后解析将成功并且 return 1
因为 int 不能有前导零!
int int_userid;
try {
int_userid = Integer.parseInt(userid); // try to parse the given user id
} catch (Exception e) { // catch if any exception
int_userid = 0; // if exception assign a default value
}
String userid = "user001";
int int_userid = Integer.parseInt(userid) != null ? Integer.parseInt(userid) : 0);
你是说这个语法吗?
但是由于 int
永远不可能是 null
你必须改为:
String userid = "user001";
int int_userid;
try {
int_userid= Integer.parseInt(userid);
} catch (NumberFormatexception e) {
int_userid = 0;
}
您可以像这样将这种方式与 String::matches
一起使用:
String userid = "user001";
int int_userid = userid.matches("\d+") ? Integer.parseInt(userid) : 0;
您还可以对正值和负值使用 -?\d+
:
int int_userid = userid.matches("-?\d+") ? Integer.parseInt(userid) : 0;
我相信你可以通过以下方法达到你想要的效果:
public static int parseIntWithDefault(String s, int default) {
try {
return Integer.parseInt(s);
} catch(NumberFormatException e) {
return default;
}
}
现在只需分配:
int int_userid = parseIntWithDefault(userId, 0);
请记住,使用 Java
的人应该使用 Java 关于格式化代码的良好做法。 int_userid
绝对有待改进。
你可以用正则表达式试试这个方法。
public static int parseWithDefault(String s, int defaultVal) {
return s.matches("-?\d+") ? Integer.parseInt(s) : defaultVal;
}
您很可能已经在使用 apache.commons.lang3:
NumberUtils.toInt(str, 0);
这可能有点过度工程化,但您可以像这样使用 Guava 的 Ints.tryParse(String)
和 Java 8 的 Optionals:
int userId = Optional.ofNullable(Ints.tryParse("userid001")).orElse(0)