0

正規表現を使用せずに以下のコードを書くにはどうすればよいですか?

public static boolean validateCode(String code){
    boolean hasAtLeastOneNumber = Pattern.compile("[0-9].*[0-9]")
                                         .matcher(code).find();

    boolean hasAtLeastTwoLetters = Pattern.compile("[a-zA-Z].*[a-zA-Z]")
                                          .matcher(code).find();

    boolean hasAtLeastOneHyphen = Pattern.compile("-")
                                         .matcher(code).find();
}
4

3 に答える 3

4

どうですか

public static boolean validateCode2(String code) {
    int numbers = 0, letters = 0, hyphens = 0;
    for (char c : code.toCharArray()) {
        if (Character.isDigit(c)) numbers++;
        if (Character.isAlphabetic(c)) letters++;
        if (c=='-') hyphens++;
    }

    return numbers>=2 && letters>=2 && hyphens>=1;
}
于 2013-05-19T21:50:00.007 に答える
3

の場合hasAtLeastOneNumber:

for (char c : code.toCharArray()) {
    if (Character.isDigit(c)) {
        return true;
    }
return false;

の場合hasAtLeastTwoLetters:

int numFound = 0;
for (char c : code.toCharArray()) {
    if (Character.isLetter(c)) {
        numFound++;
        if (numFound >= 2) {
            return true;
        }
    }
}
return false;

の場合hasAtLeastOneHyphen:

for (char c : code.toCharArray()) {
    if (c == '-') {
        return true;
    }
}
return false;

を使用したくない場合はtoCharArray、次を使用できます。

for (int i=0; i<code.length(); i++) {
    char c = code.charAt(i);
    // do the rest of the test here
}

これは基本的に using と同じですが、toCharArray少し混乱します: コードを見た人は、それを理解するのに 1 ~ 2 秒かかるでしょう。あなたtoCharArrayが何をしているのかは明らかです。

于 2013-05-19T21:41:44.683 に答える