如何检查字符串是否包含java中除数字以外的任何字符?

时间:2014-03-28 06:49:24

标签: java regex string

我想检查字符串是否包含除number之外的任何字符或特殊字符。我为此

编写了以下代码
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]");

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

由于

2 个答案:

答案 0 :(得分:4)

如果您想检查是否存在非数字字符,可以使用.*\\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
}

答案 1 :(得分:0)

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

这样的事情应该有效,我希望它会更快。

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;
}