在Java中使用正则表达式查找用户输入的数据类型
给定一个字符串,任务是在Java中使用正则表达式找到它对应的数据类型。
我们可以将所有数据类型大致分为以下类型:
- 整数:像byte 、 short 、 int 、 long等数字数据类型采用 Integer 对象的形式。
- Double:浮点数和双精度数等十进制数据类型采用 Double 对象的形式。
- 日期:任何格式的日期(如 dd-mm-yyyy 或 dd/mm/yyyy)都是Java.util.Date 的一部分
- 字符串:所有剩余的输入都属于字符串类型。
注意:字符输入和布尔值也将被视为字符串。
例子:
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
方法:
- 以字符串的形式输入。
- 现在,如果输入仅包含数字,则它是一个 Integer 对象。如果它包含带小数点的数字,则它是一个 Double-object。如果输入是日期的形式,我们将其打印为Java.util.Date 对象。否则,我们说输入是一个可能包含字母数字和特殊字符的字符串对象。
下面是上述方法的实现:
Java
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);
}
}
输出
The datatype of 56.73 is: java.lang.Double