【问题标题】:how to check string contain any character other than number in java?java - 如何检查字符串是否包含除数字以外的任何字符?
【发布时间】:2014-03-28 06:49:23
【问题描述】:

我想检查字符串是否包含除数字以外的任何字符或特殊字符。我为此编写了以下代码

String expression = "[^a-zA-z]";
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(jTextFieldPurchaseOrder.getText().toString().trim());

当我从 jTextField 获取价值并检查我的状况时,它工作正常。但是在从 DTO 检查字符串时出错,如下所示

list.get(0).getChalan_trans_id().toString().trim().matches("[^a-zA-z]");

其中 list 是 DTO 的 arraylist。 我不知道我哪里出错了?

谢谢

【问题讨论】:

  • “但给出错误”并没有给我们足够的信息。怎么了? (请注意,这目前只是查看它是否有任何非 A-Z 字母 - 它与数字无关......)
  • “我要检查字符串是否包含除数字以外的任何字符或特殊字符”。正则表达式 \\D 最适合这种情况
  • 不应该是[^a-zA-Z]而不是[^a-zA-z]
  • 所以你希望字符串只有数字?
  • @Jon Skeet:给出错误意味着它没有给我正确的结果,比如字符串包含字符,那么它给出错误的结果,如果字符不存在,那么在检查条件下给出 true。

标签: java regex string


【解决方案1】:

如果要检查是否有非数字字符,可以使用.*\\D.*

if (list.get(0).getChalan_trans_id().toString().trim().matches(".*\\D.*")) {
    //non-digit found, handle it
}

或者,也许更容易,反过来做:

if (list.get(0).getChalan_trans_id().toString().trim().matches("\\d*")) {
    //only digits found
}

【讨论】:

  • @ALV:不客气。我在您的个人资料中看到您尚未接受任何问题的答案。当您得到满意的答案时,这样做很重要,否则您可能无法回答未来的问题。
【解决方案2】:

可能有比正则表达式更有效的方法。正则表达式很强大,但对于像这样的简单任务来说可能有点过头了。

这样的东西应该可以工作,而且我希望它会更快。

static boolean hasNonNumber(String s) {
    for (int i = 0; i < s.length(); ++i) {
        char c = s.charAt(i);
        if (!Character.isDigit(c)) {
            return true;
        }
    }
    return false;
}

【讨论】:

    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 2013-12-04
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多