Search this blog:
or Google with Java-Success in search.
e.g "Java-success Spring"

Jun 30, 2013

Core Java Coding Interview Question -- validating an input String to be alphanumeric

Q. Can you write sample code as to different ways in which you can validate an input String to return true if the input is alpha numeric and otherwise return false?
A. It can be done a number of different ways.
  1. Using regex.
  2. Without using regex.
 Firstly, using regex

Step 1: Have the right dependency jars in the pom.xml file as shown below.

<dependency>
 <groupId>commons-lang</groupId>
 <artifactId>commons-lang</artifactId>
 <version>2.6</version>
</dependency>

<dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.10</version>
 <scope>test</scope>
</dependency>


Step 2: The implementation class.

package com.mycompany.app5;

import org.apache.commons.lang.StringUtils;

public class AlphaNumeric
{
    
    public boolean isAlphaNumeric(String input)
    {
        //fail fast
        if (StringUtils.isEmpty(input))
        {
            throw new IllegalArgumentException("The input cannot be empty !!!");
        }
        
        boolean result = false;
        
        if (input.matches("[a-zA-Z0-9]+")) // one or more alpha numeric characters
        {
            result = true;
        }
        
        return result;
        
    }
}


Step 3:The JUnit test class.

package com.mycompany.app5;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;

public class AlphaNumericTest
{ 
    AlphaNumeric an;
    
    @Before
    public void setUp()
    {
        an = new AlphaNumeric();
    }
    
    @Test
    public void testAlphaNumericHappyPath()
    {
        Assert.assertEquals(true, an.isAlphaNumeric("AUD123"));
        Assert.assertEquals(true, an.isAlphaNumeric("123aud"));
        Assert.assertEquals(true, an.isAlphaNumeric("123"));
        Assert.assertEquals(true, an.isAlphaNumeric("hgD"));
        
        Assert.assertEquals(false, an.isAlphaNumeric("hg*D"));
        Assert.assertEquals(false, an.isAlphaNumeric("@hgD"));
        Assert.assertEquals(false, an.isAlphaNumeric("@hgD"));
        Assert.assertEquals(false, an.isAlphaNumeric("@*#"));
    }
    
    @Test(expected = java.lang.IllegalArgumentException.class)
    public void testAlphaNumericUnHappyPath1()
    {
        Assert.assertEquals(true, an.isAlphaNumeric(null));
    }
    
    @Test(expected = java.lang.IllegalArgumentException.class)
    public void testAlphaNumericUnHappyPath2()
    {
        Assert.assertEquals(true, an.isAlphaNumeric(""));
    }
}

Using apache's commons-lang package's method directly as shown below.

package com.mycompany.app5;

import org.apache.commons.lang.StringUtils;

public class AlphaNumeric
{
    
    public boolean isAlphaNumeric(String input)
    {
        //fail fast
        if (StringUtils.isEmpty(input))
        {
            throw new IllegalArgumentException("The input cannot be empty !!!");
        }
        
        boolean result = false;
        
        if (StringUtils.isAlphanumeric(input)) // one or more alpha numeric characters
        {
            result = true;
        }
        
        return result;
        
    }
}

Using the core Java without any framework

package com.mycompany.app5;

import org.apache.commons.lang.StringUtils;

public class AlphaNumeric
{
    
    public boolean isAlphaNumeric(String input)
    {
        //fail fast
        if (StringUtils.isEmpty(input))
        {
            throw new IllegalArgumentException("The input cannot be empty !!!");
        }
        
        boolean result = true;
        
        //chack each character agaianst the ASCII table hex value
        for (int i = 0; i < input.length(); i++)
        {
            char c = input.charAt(i);
            if (c < 0x30 || (c >= 0x3a && c <= 0x40) || (c > 0x5a && c <= 0x60) || c > 0x7a)
            {
                result = false;
                break;
            }
        }
        
        return result;
        
    }
}

Alternatively, using the Character class.

package com.mycompany.app5;

import org.apache.commons.lang.StringUtils;

public class AlphaNumeric
{
    
    public boolean isAlphaNumeric(String input)
    {
        //fail fast
        if (StringUtils.isEmpty(input))
        {
            throw new IllegalArgumentException("The input cannot be empty !!!");
        }
        
        boolean result = true;
        
        //chack each character agaianst the ASCII table hex value
        for (int i = 0; i < input.length(); i++)
        {
            char c = input.charAt(i);
            if (!Character.isDigit(c) && !Character.isLetter(c))
            {
                result = false;
                break;
            }
        }
        
        return result;
        
    }
}

No comments:

Post a Comment