Method to check "dutch" postal code in java

Ronny Giezen :

I'm trying to create a method in java to validate a dutch postal code. the dutch postal code consist 6 characters which contain 4 numbers (first 4 chars) and 2 letters (last 2 chars) so for example 1010AB.

I made a boolean to return false if the postcode is not within standard and true if it is. I'm getting stuck with checking the last 2 letters.

I've created a loop for the first 4 numbers, but I don't know how to go further from here to check the letters aswell.

My java method:

public static boolean checkPostcode(String postCode) {


        boolean value = false;
        if (postCode.length() == lengthPost) {
            for (int i = 0; i < postCode.length(); i++) {
                if (i <= 4) {
                    if (Character.isDigit(postCode.charAt(i)) {
                        value = true;

                 else{
                            if (Character.isLetter(postCode.charAt(i))) {
                                value = true;
                            }
                        }
                    }
                }
            }

        }
     return value;
    }

You van ignore the last else, because that is the point where I get stuck....

If someone can help me that would be great!!

Thanks in advance

Arvind Kumar Avinash :

Solution using regex:

public class Main {
    public static void main(String[] args) {
        // Tests
        System.out.println(checkPostcode("1234AB"));
        System.out.println(checkPostcode("5678MN"));
        System.out.println(checkPostcode("0123AB"));
        System.out.println(checkPostcode("1023AB"));
        System.out.println(checkPostcode("1230AB"));
        System.out.println(checkPostcode("AB1234"));
        System.out.println(checkPostcode("123456"));
        System.out.println(checkPostcode("ABCDEF"));
        System.out.println(checkPostcode("12345A"));
        System.out.println(checkPostcode("A12345"));
        System.out.println(checkPostcode("A12345B"));
        System.out.println(checkPostcode("1ABCDE6"));
        System.out.println(checkPostcode("1ABCD6"));
    }

    public static boolean checkPostcode(String postCode) {
        return postCode.matches("[1-9]{1}[0-9]{3}[a-zA-Z]{2}");
    }
}

Output:

true
true
false
true
true
false
false
false
false
false
false
false
false

Non-regex solution:

public static boolean checkPostcode(String postCode) {
    if (postCode.length() != lengthPost || postCode.charAt(0) == '0') {
        return false;
    }
    if (postCode.length() == lengthPost) {
        for (int i = 0; i < postCode.length(); i++) {
            if (i < 4 && Character.isLetter(postCode.charAt(i))) {
                return false;
            }
            if (i > 3 && Character.isDigit(postCode.charAt(i))) {
                return false;
            }
        }
    }
    return true;
}

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=8119&siteId=1