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 ...