我想检查字符串是否包含除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。 我不知道我哪里错了?
由于
答案 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;
}