一、需求
根据OCR识别出的身份证地址或者用户输入的地址,智能识别出用户的省、市、区/县和详细地址信息。
二、思路
解析给到接口的完整地址fullAddress,逐个匹配省province、市city、区/县area、详细地址detail,然后将 province+city+area+detail 返回即可。
PS:需要考虑一些情况:
1、四个直辖市(北京市、上海市、天津市、重庆市)。直辖市的完整地址fullAddress只有省、县/区
2、完整地址fullAddress只有省、区/县
3、市与区/县重名
4、区/县与区/县重名
三、实现代码
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 身份证信息分析工具类Util
*/
@Slf4j
public class AnalysisIdCardUtil {
/**
* 获取详细地址
*
* @param fullAddress 身份证完整地址
*/
public static String getDetailedAddress(String fullAddress) {
String[] addressArrays = spliceDetailedAddress(fullAddress);
return addressArrays[addressArrays.length - 1];
}
/**
* 获取省市区地址,如:安徽省合肥市包河区
*
* @param fullAddress 身份证完整地址
*/
public static String getPcaAddress(String fullAddress) {
String[] addressArrays = spliceDetailedAddress(fullAddress);