【Java 解析全国详细地址】Java 利用正则表达式完美解析全国省市区地址
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AddressParser {
private static final Pattern CHINESE_ADDRESS_PATTERN =
Pattern.compile("^(?<province>[^省]+省|[^自治区]+自治区|[^市]+市|[^县]+县|[^乡]+乡|[^村]+村|[^区]+区)?(?<city>[^市]+市|[^县]+县|[^乡]+乡|[^村]+村|[^区]+区)?(?<district>[^县]+县|[^乡]+乡|[^村]+村|[^区]+区)?(?<detail>.*)$");
public static Address parseAddress(String address) {
Matcher matcher = CHINESE_ADDRESS_PATTERN.matcher(address);
if (matcher.find()) {
return new Address(matcher.group("province"), matcher.group("city"), matcher.group("district"), matcher.group("detail").trim());
}
return new Address(null, null, null, address);
}
public static void main(String[] args) {
String address = "广东省深圳市南山区科技中一路1号";
Address parsedAddress = parseAddress(address);
System.out.println("省份: " + parsedAddress.getProvince());
System.out.println("城市: " + parsedAddress.getCity());
System.out.println("区/县: " + parsedAddress.getDistrict());
System.out.println("详细地址: " + parsedAddress.getDetail());
}
}
class Address {
private String province;
private String city;
private String district;
private String detail;
public Address(String province, String city, String district, String detail) {
this.province = province;
this.city = city;
this.district = district;
this.detail = detail;
}
// Getter and Setter methods
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district = district;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
}
这段代码定义了一个AddressParser
类,它包含了一个静态方法parseAddress
,该方法使用正则表达式来匹配中国的省、市、区和详细地址。然后通过main
方法进行测试,展示了如何使用这个解析器。这个例子简单明了,并且可以很容易地进行扩展以适应其他复杂的地址解析需求。
评论已关闭