Java String - 查看字符串是否仅包含数字而不包含字母

新手上路,请多包涵

我在整个应用程序中加载了一个字符串,它从数字变为字母等。我有一个简单的 if 语句来查看它是否包含字母或数字,但是有些东西不能正常工作。这是一个片段。

 String text = "abc";
String number;

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

尽管 text 变量确实包含字母,但条件返回为 true 。和 && 应该评估,因为两个条件都必须是 true 以便处理 number = text;

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

解决方案:

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

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

 String text = "abc";
String number;

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

原文由 RedHatcc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 781
2 个回答

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

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

至:

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

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

如果您真的想使用数值,请使用 Integer.parseInt()Double.parseDouble() 正如其他人在下面解释的那样。


附带说明一下,将布尔值与 truefalse 进行比较通常被认为是不好的做法。只需使用 if (condition)if (!condition)

原文由 Adam Liss 发布,翻译遵循 CC BY-SA 3.0 许可协议

我会这样做:

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

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

原文由 tokhi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题