我在应用程序中加载了一个字符串,它可以从数字变成字母等等。我有一个简单的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; 
}

当前回答

在Java中有很多从string中获取数字的工具(反之亦然)。您可能希望跳过正则表达式部分,以避免其复杂化。

例如,你可以试着看看什么是Double。parseDouble(String s)为您返回。如果在字符串中没有找到合适的值,它应该抛出NumberFormatException。我建议使用这种技术,因为实际上可以将String表示的值作为数字类型使用。

其他回答

在Java中有很多从string中获取数字的工具(反之亦然)。您可能希望跳过正则表达式部分,以避免其复杂化。

例如,你可以试着看看什么是Double。parseDouble(String s)为您返回。如果在字符串中没有找到合适的值,它应该抛出NumberFormatException。我建议使用这种技术,因为实际上可以将String表示的值作为数字类型使用。

您也可以使用NumberUtil。isCreatable(String str)来自Apache Commons

Apache Commons Lang提供了stringutils . isnumeric (CharSequence cs),它接受String作为参数,并检查它是否由纯数字字符组成(包括来自非拉丁脚本的数字)。如果存在空格、减号、加号等字符,以及逗号和点等小数分隔符,则该方法返回false。

该类的其他方法允许进一步的数值检查。

Character first_letter_or_number = query.charAt(0);
                //------------------------------------------------------------------------------
                if (Character.isDigit())
                {

                }
                else if (Character.isLetter())
                {

                }

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

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

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

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

希望这能帮助到一些人!