我在应用程序中加载了一个字符串,它可以从数字变成字母等等。我有一个简单的if语句,看看它是否包含字母或数字,但是,有些东西不太正确。下面是一个片段。

String text = "abc"; 
String number; 

if (text.contains("[a-zA-Z]+") == false && text.length() > 2) {
    number = text; 
}

虽然文本变量包含字母,但条件返回为true。和&&应该eval作为两个条件都必须为真,以便处理number =文本;

==============================

解决方案:

我能够通过使用以下代码来解决这个问题,该代码由对这个问题的评论提供。所有其他帖子也是有效的!

我使用的有效方法来自第一条评论。尽管提供的所有示例代码似乎也是有效的!

String text = "abc"; 
String number; 

if (Pattern.matches("[a-zA-Z]+", text) == false && text.length() > 2) {
    number = text; 
}

当前回答

你也可以使用[a-zA-Z]{2,}。

哪里[a-zA-Z]只检查字母和{2,}检查长度,应该大于2

其他回答

我是这样做的:

if(text.matches("^[0-9]*$") && text.length() > 2){
    //...
}

$将避免部分匹配,例如;1 b。

在这样的典型场景中涉及任何异常抛出/处理是一种糟糕的实践。 因此,parseInt()不是很好,但regex是一个优雅的解决方案,但要注意以下几点: 分数 消极的数字 -十进制分隔符可能因国家而异(例如:','或'。') -有时允许使用所谓的千位分隔符,如空格或逗号,例如12324,1000.355

要处理应用程序中所有必要的情况,您必须小心,但是这个正则表达式涵盖了典型的场景(正/负和分数,用一个点分隔):^[-+]?\d*.?美元\ d + 对于测试,我推荐regexr.com。

你也可以使用[a-zA-Z]{2,}。

哪里[a-zA-Z]只检查字母和{2,}检查长度,应该大于2

为了简单地检查字符串是否只包含字母,使用以下代码:

if (text.matches("[a-zA-Z]+")){
   // your operations
}

为了简单地检查字符串是否只包含NUMBER,请使用以下代码:

if (text.matches("[0-9]+")){
   // your operations
}

希望这能帮助到一些人!

如果要将数字作为文本处理,则更改:

if (text.contains("[a-zA-Z]+") == false && text.length() > 2){

to:

if (text.matches("[0-9]+") && text.length() > 2) {

与其检查字符串不包含字母字符,不如检查它是否只包含数字。

如果你真的想使用数值,请使用Integer.parseInt()或Double.parseDouble(),如下所述。


作为旁注,将布尔值与true或false进行比较通常被认为是不好的做法。只需使用if(条件)或if(!条件)。