问题
我有一个字符串,我在我的应用程序中加载,它从数字变为字母等。我有一个简单的7984862248语句,看它是否包含字母或数字,但有些东西不能正常工作。这是一个片段。
String text = "abc";
String number;
if (text.contains("[a-zA-Z]+") == false && text.length() > 2) {
number = text;
}
虽然text
变量确实包含字母,但条件返回为true
。 and&&
应该评估为两个条件必须是true
才能处理number = text;
==============================
解:
我能够通过使用此问题的评论提供的以下代码来解决这个问题。所有其他帖子也有效!
我使用的工作来自第一条评论。虽然提供的所有示例代码似乎也是有效的!
String text = "abc";
String number;
if (Pattern.matches("[a-zA-Z]+", text) == false && text.length() > 2) {
number = text;
}
#1 热门回答(269 赞)
如果你要将数字作为文本处理,请更改:
if (text.contains("[a-zA-Z]+") == false && text.length() > 2){
至:
if (text.matches("[0-9]+") && text.length() > 2) {
而不是检查字符串是否不包含字母字符,检查以确保它包含ononumerics。
如果你确实想要使用数值,请使用Integer.parseInt()
或Double.parseDouble()
,其他人已在下面说明。
作为旁注,将布尔值与true
或false
进行比较通常被认为是不好的做法。只需使用if (condition)
或if (!condition)
。
#2 热门回答(20 赞)
你也可以使用Apache Commons的NumberUtil.isCreatable(String str)
#3 热门回答(8 赞)
我就是这样做的:
if(text.matches("^[0-9]*$") && text.length() > 2){
//...
}
$
将避免部分匹配,例如; 1B
。