位址解析 僅供參考與學習 Java

2021-09-25 00:06:44 字數 4560 閱讀 8104

1、檢查是否存在省份

2、如果存在省份,將會檢查省份是否明確標註省,自治區,市(直轄市),特別行政區的關鍵字,如果不存在,將會自動拼接上,便於後邊正則匹配

3、檢查市級地區是否明確標註關鍵字,如果沒有標註,將會自動拼接上,如果市級位址中包含州,盟,自治州等特殊情況的市級地區,將不會進行自動拼接(注:由於給出的公共的市級地區沒有明確區分是市還是州或者是縣,因此如果沒有在位址中明確,將會統一拼接成市

4、通過正規表示式將重構後的位址進行分割

分割後結果:

1、四川省

2,成都市

3,高新區

4,***位址

5、將位址中存在重複的部分進行去重,保留唯一的省市區位址

第一,定義公用的物件,在各個不同的步驟中會相應的使用到

/**

* 省級字尾

*/private static string suffixs = ;

/*** 中國34個省,直轄市,自治區,特別行政區

*/@suppresswarnings("serial")

private static mapmaps = new hashmap());

/*** 中國的4個直轄市

*/put(2, new string);

/*** 中國的5個自治區

*/put(3, new string);

/*** 中國的2個特別行政區

*/put(4, new string);

/*** 中國的市

*/put(5, new string);

}};/**

* 拼接「省」,「市」字尾

* @param address

* @param $suffix

* @param s

* @return

*/private static string restructure(string address,string $suffix,string s)

else

}return null;

}

第二,檢查位址中是否存在省及地區
/**

* 判斷是否包含省級地區

* @param address

* @return -1(不包含省份 ), 1(包含23個省份中的乙個),2(包含直轄市),3(包含自治區),4(包含特別行政區),5(包含市級)

*/public static integer i***istprovince(string address)}}

return i***it;

}

第三,自動拼接「省,市(直轄市),自治區,特別行政區」關鍵字
/**

* 處理沒有指定省市字尾的位址

* 檢查出來之後自動拼接

* 例如:四川成都高新區

* 結果:四川省成都市高新區

* @param suffix

* @param address

* @param array

* @return

*/private static string restructure(string address,int k)

for(string s : arrays)

}else

provinces = $suffix;

//拼接「省」,「市」字尾

string $address = restructure(address, $suffix, s);

if($address != null)

}return restructure(address,provinces);

}

第四,自動拼接「市」級關鍵字,特殊情況除外
/**

*/@suppresswarnings()

private static mapcitykeywords = new linkedhashmap());

put(1,new string);

put(2,new string);

}};/**

* 處理沒有填寫市級地區的位址,一旦檢查出來,則新增上字尾

* 例如:成都高新區

* 結果:成都市高新區

* @param address

* @return

*/private static string restructure(string address,string provinces)

//如果省份是直轄市,自動插入"市轄區"用於區分

for(string s : maps.get(2))

}//字尾

string suffix = suffixs[1];

big:for(string s : maps.get(5))

}//拼接「省」,「市」字尾

string $address = restructure(address, s + suffix, s);

if($address != null)

}return provinces + address;

}

第五,通過正規表示式,將位址進行分割
/**

* 解析位址

* @param address

* @return

*/public static mapaddressresolution(string address)

//重構一次位址

return addressresolution(rmap);

}

第六,將解析後的位址進行去重,去除掉重複的省市區
/**

* 重構一次位址,將直轄市所在區域進行特殊處理

* 保留,即使從肉眼能看出是重複的,也不會處理

* 例如:四川省成都市高新區四川成都高新***x大道***號

* @param rmap

* @return

*/private static mapaddressresolution(maprmap)

}//市

city = rmap.get("city");

//區(縣)

string county = rmap.get("county");

//省string province = rmap.get("province");

//街道,鄉村,鎮

rmap.put("town", rmap.get("town").replace(city, "").replace(county, "").replace(province, ""));

//詳細位址

rmap.put("village", rmap.get("village").replace(city, "").replace(county, "").replace(province, ""));

return rmap;

}

第七,對外暴露的的介面
/**

* 格式化省市縣/區資訊

* @param address

* @return

*/public static mapaddressformat(string address) else

//格式化位址

mapaddresss = addressresolution(address);

if(addresss == null)

//省份

string province = addresss.get("province");

//市string city = addresss.get("city");

//區縣

string county = addresss.get("county");

//詳細位址

string town = addresss.get("town");

string village = addresss.get("village");

stringbuilder detailaddress = new stringbuilder();

maprmap = new linkedhashmap();

rmap.put("province",province);

rmap.put("city",city);

rmap.put("county",county);

rmap.put("town",town + village);

rmap.put("detail", detailaddress.tostring().replaceall("\\s+",""));

rmap.put("detail_format", detailaddress.tostring());

return rmap;

}

第八,測試
public static void main(string args) ;

for(string s : address)

}

九、測試結果

ITIL,僅供參考!

上週去某上市公司面試乙個itil產品技術經理的崗位,前一輪面試已經談了不少管理方面的事情了,這次主要集中在談itil的知識。該公司本身在做hp等廠家的itil類產品的 自己也開發了一套itil軟體。在面談過程中,該公司的面試人員對我原先服務的理想科技公司entegor ieai 產品在光大銀行it服...

汽車租賃,僅供參考適應參考。

汽車租賃,僅供參考適應參考。汽車業務類 public class vehicleoperation 租車 簡單工廠模式 引數 品牌 座位數 型號 客車 品牌 座位數 轎車 品牌 0 型號 public vehicle rentvehicle string brand,int seatcount,st...

高精度運算 參考模板 僅供參考

比較簡短的高精度加法和減法運算模板。大除法的日後更新。1 兩個非負的大整數相加 2 void big plus char a,char b,char ans 325 26 if c k 1 判斷最高位是否有進製 27 k 28 j 0 29 for i k i 1 i 30 ans j c i 0 ...