Строка содержит хотя бы одну цифру - PullRequest
6 голосов
/ 21 июня 2011

Я пытаюсь проверить, содержит ли строка хотя бы цифру, строчную или прописную букву.

Я написал что-то вроде этого:

      int combinations = 0;
      string pass = "!!!AAabas1";

      if (pass.matches("[0-9]")) {
          combinations = combinations + 10;
      }

      if (pass.matches("[a-z]")) {
          combinations =combinations + 26;
      }

      if (pass.matches("[A-Z]")) {
          combinations =combinations + 26;
      }

Однако я не понимаю, почему я не могу заставить комбинации переходить на 36. Они просто остаются на 0. Что я делаю неправильно?

Ответы [ 5 ]

12 голосов
/ 21 июня 2011

Вместо этого вы можете использовать Pattern, я думаю, что метод "match" ищет всю строку, чтобы соответствовать регулярному выражению.

Попробуйте следующий код:

    int combinations = 0;
    String pass = "!!AAabas1";
    if (Pattern.compile("[0-9]").matcher(pass).find()) {
        combinations = combinations + 10;
    }

    if (Pattern.compile("[a-z]").matcher(pass).find()) {
        combinations = combinations + 26;
    }

    if (Pattern.compile("[A-Z]").matcher(pass).find()) {
        combinations = combinations + 26;
    }
4 голосов
/ 21 июня 2011

Вот моя попытка.Обратите внимание, что для проверки используются категории Юникода, поэтому он не поддерживает латиноамериканский язык.

3 голосов
/ 21 июня 2011

Проблема в том, что matches пытается найти соответствие всей входной строке.

Вместо этого попробуйте создать Pattern, затем создать Matcher, а затем использовать поиск метод.

Шаблон Pattern Javadoc должен сильно помочь.

1 голос
/ 06 октября 2016
String str_rno = "CooL8";

boolean Flag = false;

String[] parts = str_rno.split(""); 

for (int i = 0; i < str_rno.length(); i++) {

    String part1 = parts[i + 1];      

    if (Character.isDigit(str_rno.charAt(i))) {
        System.out.println(" " + i + " " + part1 + " digit");
        Flag = true;
    } else {
        System.out.println(" " + i + " " + part1 + " char ");
    }

}


if(Flag==true){
    Toast.makeText(getApplicationContext(),"String contain 1 digit",Toast.LENGTH_SHORT).show();
}

if(Flag==flase){
    Toast.makeText(getApplicationContext(),"String not contain 1 digit",Toast.LENGTH_SHORT).show();
}
1 голос
/ 21 июня 2011

Хотя использование регулярного выражения для этого, очевидно, может сработать, класс Guava CharMatcher может быть более подходящим для того, что вы пытаетесь сделать:*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...