How to finding data type of user input using regular expression in java

Given a string, the task is to find the appropriate data type using regular expressions in Java.

In general, we can divide all data types into the following types:

  1. Integer: Numeric data types such as Byte, Short, Int, Long have the form of an Integer object.
  2. Double: Decimal data types such as float and double are Double-object.
  3. Date: Dates in any format (such as MM-DD-YYYY or DD/MM/YYYY) are part of java.util.Date
  4. String: All other inputs are of type String.

Note: Character inputs and boolean values also will be considered as string.

Examples:

 
Input: “56.73”



Output: java.lang.Double

Explanation: 56.73 is of float data type which are part of java.lang.Double

Input: “true”

Output: java.lang.String

Explanation: Here true is considered as a regular string which is a part of java.lang.String

Approach: 

  • Take input within the sort of a string.
  • Now if the input contains only digits, it's an Integer object. If it contains numbers with a percentage point it's a Double-object. If the input is within the sort of a Date, we print it as java.util.Date object. Else, we are saying that the input may be a String object which can contain alphanumeric and special characters.

Below is the implementation of the above approach:

 

 
public class GFG {

	// method stub
	public static void main(String[] arg)
	{

		String input = "56.73";
		String dataType = null;

		// checking for Integer
		if (input.matches("\\d+")) {
			dataType = "java.lang.Integer";
		}

		// checking for floating point numbers
		else if (input.matches("\\d*[.]\\d+")) {
			dataType = "java.lang.Double";
		}

		// checking for date format dd/mm/yyyy
		else if (input.matches(
					"\\d{2}[/]\\d{2}[/]\\d{4}")) {
			dataType = "java.util.Date";
		}

		// checking for date format mm/dd/yyyy
		else if (input.matches(
					"\\d{2}[/]\\d{2}[/]\\d{4}")) {
			dataType = "java.util.Date";
		}

		// checking for date format dd-mon-yy
		else if (input.matches(
					"\\d{2}[-]\\w{3}[-]\\d{2}")) {
			dataType = "java.util.Date";
		}

		// checking for date format dd-mon-yyyy
		else if (input.matches(
					"\\d{2}[-]\\w{3}[-]\\d{4}")) {
			dataType = "java.util.Date";
		}

		// checking for date format dd-month-yy
		else if (input.matches("\\d{2}[-]\\w+[-]\\d{2}")) {
			dataType = "java.util.Date";
		}

		// checking for date format dd-month-yyyy
		else if (input.matches("\\d{2}[-]\\w+[-]\\d{4}")) {
			dataType = "java.util.Date";
		}

		// checking for date format yyyy-mm-dd
		else if (input.matches(
					"\\d{4}[-]\\d{2}[-]\\d{2}")) {
			dataType = "java.util.Date";
		}

		// checking for String
		else {
			dataType = "java.lang.String";
		}

		System.out.println("The datatype of " + input
						+ " is: " + dataType);
	}
}

Output

The datatype of 56.73 is: java.lang.Double

 

Submit Your Programming Assignment Details