对用户输入的信息,包括:姓名、地址、邮政编码、身份证号码、电话号码、电子邮箱等文本信息进行解析,并进行初步的合法性判断java实现
时间: 2023-12-22 12:05:00 浏览: 31
好的,以下是一种实现方式:
1. 创建一个用户信息实体类 UserInfo:
```java
public class UserInfo {
private String name;
private String address;
private String postcode;
private String idCard;
private String phone;
private String email;
// 构造方法和 getter/setter 略
}
```
2. 创建一个用户信息解析类 UserParser:
```java
public class UserParser {
public static UserInfo parse(String input) {
UserInfo info = new UserInfo();
String[] lines = input.split("\n");
for (String line : lines) {
String[] parts = line.split(":");
if (parts.length != 2) {
throw new IllegalArgumentException("Invalid input format");
}
String key = parts[0].trim();
String value = parts[1].trim();
switch (key) {
case "姓名":
info.setName(value);
break;
case "地址":
info.setAddress(value);
break;
case "邮政编码":
if (isValidPostcode(value)) {
info.setPostcode(value);
} else {
throw new IllegalArgumentException("Invalid postcode");
}
break;
case "身份证号码":
if (isValidIdCard(value)) {
info.setIdCard(value);
} else {
throw new IllegalArgumentException("Invalid ID card number");
}
break;
case "电话号码":
if (isValidPhone(value)) {
info.setPhone(value);
} else {
throw new IllegalArgumentException("Invalid phone number");
}
break;
case "电子邮箱":
if (isValidEmail(value)) {
info.setEmail(value);
} else {
throw new IllegalArgumentException("Invalid email address");
}
break;
default:
throw new IllegalArgumentException("Unsupported field: " + key);
}
}
return info;
}
private static boolean isValidPostcode(String postcode) {
// 验证邮政编码是否合法,这里只做示例,可以根据实际情况修改
return postcode.matches("\\d{6}");
}
private static boolean isValidIdCard(String idCard) {
// 验证身份证号码是否合法,这里只做示例,可以根据实际情况修改
return idCard.matches("\\d{18}");
}
private static boolean isValidPhone(String phone) {
// 验证电话号码是否合法,这里只做示例,可以根据实际情况修改
return phone.matches("\\d{11}");
}
private static boolean isValidEmail(String email) {
// 验证电子邮箱是否合法,这里只做示例,可以根据实际情况修改
return email.matches("[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+");
}
}
```
3. 在主程序中,获取用户输入并调用解析类进行解析和初步合法性判断:
```java
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入用户信息:\n");
String input = scanner.nextLine();
try {
UserInfo info = UserParser.parse(input);
System.out.println("解析结果:\n" + info);
} catch (IllegalArgumentException e) {
System.out.println("解析失败:" + e.getMessage());
}
}
}
```
以上代码会提示用户输入信息,然后调用 UserParser 类的 parse 方法进行解析和初步合法性判断。如果解析成功,则打印解析结果;否则打印解析失败的原因。解析类中使用了 switch 语句分别处理各个字段,对于邮政编码、身份证号码、电话号码、电子邮箱等需要进行初步合法性判断的字段,调用对应的验证方法进行判断。