提问人:St.Antario 提问时间:9/29/2014 更新时间:2/28/2018 访问量:10511
要检查是否将字符串传递为可解析为 Integer?
To check is passed string parsable to Integer?
问:
我想检查是我传递给有效字符串进行解析。如果一个不可解析,我需要返回 0。String
Integer.valueOf(String s)
我通过以下方式进行操作:
try{
Integer.valueOf(String s)
} catch(NumberFormatException e) {
return 0;
}
这样做是不是很糟糕?
答:
7赞
Vipul Paralikar
9/29/2014
#1
方法 1:使用正则表达式检查作为数字的有效性
public static int parseStrToInt(String str) {
if (str.matches("\\d+")) {
return Integer.parseInt(str);
} else {
return 0;
}
}
方法二:使用Java内置的java.text.NumberFormat对象,查看解析字符串后解析器的位置是否在字符串的末尾。如果是,我们可以假设整个字符串都是数字
public static int strToInt(String str) {
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition pos = new ParsePosition(0);
formatter.parse(str, pos);
if (str.length() == pos.getIndex()) {
return Integer.parseInt(str);
} else {
return 0;
}
}
评论
4赞
BackSlash
9/29/2014
我认为字符串应该匹配.可以有负整数(所以字符串以 )和正整数(以 开头)和[+-]?\d+
-
+
1赞
srinivasan Elangovan
9/29/2014
#2
嗨,即使数字是双倍或长,这也会做,这在解析时总是有用的。
List<String> myStrings = new ArrayList<String>();
myStrings.add("text");
myStrings.add("25");
myStrings.add("102.23333333");
myStrings.add("22.34");
NumberFormat nf = NumberFormat.getInstance();
for( String text : myStrings){
try {
System.out.println( nf.parse(text));
} catch (ParseException e) {
e.printStackTrace();
}
}
4赞
yaser eftekhari
9/29/2014
#3
我会使用:
s = s.trim(); // sometimes user inputs white spaces without knowing it
int value;
if (s.length() == 0) {
value = 0; // obviously not a string
} else {
try{
value = Integer.valueOf(s);
} catch(NumberFormatException e) {
value = 0;
}
}
// do whatever you like here
评论
0赞
Mann
5/31/2017
请在该行添加分号。值 = Integer.valueOf(s) ;
0赞
Cardinal System
6/22/2017
Java 索引从 0 开始,因此是错误的。它应该是if (s.length == 0) {...
if (s.length < 0) {...
;)
0赞
yaser eftekhari
6/24/2017
是的,你是对的,Java 索引从 0 开始,但我不明白你的意思!让我指出,这总是!s.length() < 0
false
上一个:Python 实例方法语法
下一个:Cypress 分页处理
评论
string.matches("\\d+")
while
+
-