全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2229
推到 Plurk!
推到 Facebook!

如何在不同字串抓取同性質的欄位資料呢?- JSP

答題得分者是:neoart
b7307024
一般會員


發表:9
回覆:21
積分:6
註冊:2005-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-19 21:45:46 IP:220.132.xxx.xxx 訂閱
各位大大好!請問如何在同一欄位的不同資料裡,抓取資料出來呢?
如: 我有兩種字串
"聯絡地址"
屏東縣內埔鄉瑞華路35巷3號 要抓出 屏東縣
401台中市東區富榮街15之5號7樓 要抓出 台中市
現在就是卡在 如何去除401這個字串
本想說要用substring抓出資料後,比對出如果是數字,就跳過數字輸出
但好像不行,所以請各位前輩教導一下吧,謝謝!

neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-19 21:56:54 IP:220.132.xxx.xxx 訂閱
你的"401"
是怎麼算?
是要用阿拉伯數字?
還是固定位置?
先把原則確定出來,coding就不一樣了
b7307024
一般會員


發表:9
回覆:21
積分:6
註冊:2005-07-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-19 23:35:16 IP:220.132.xxx.xxx 訂閱

===================引 用 neoart 文 章===================
你的"401"
是怎麼算?
是要用阿拉伯數字?
還是固定位置?
先把原則確定出來,coding就不一樣了
-----------------------------------------------------------------------------------------
大大你好!401是郵遞區號,而據我所知郵遞區號最長好像是五碼
所有可能發生
台南市東大路六段369號
401台中市東大路六段369號
30000新竹市東大路六段369號
這3種不同的資料,但是我只要抓縣市出來就好,如:台南市,台中市,新竹市
這樣不知如何coding呢?
編輯記錄
b7307024 重新編輯於 2007-04-19 23:35:50, 註解 無‧
yckuo
高階會員


發表:55
回覆:389
積分:238
註冊:2003-03-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-19 23:45:36 IP:220.132.xxx.xxx 未訂閱
如果只是要抓縣市的話,那弄個對映表就好了,台灣也不過就幾個縣市而已.
------
yckuo
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-20 00:19:21 IP:220.132.xxx.xxx 訂閱
唔.是有點麻煩了點
你要個別試出
address="高雄縣大寮鄉義和村"

int indexOfCounty=address.indexof("縣");
if(indexOfCounty!=-1){
String sub1=address.subtring(0,indexOfCounty! 1); //拆出 高雄縣

int indexOfVillage=address.indexof("村");
if(indexOfVillage!=-1){
String sub2=address.subtring(indexOfCounty! 1,indexOfVillage 1); //拆出 義和村..
}
...
...
...
}
當然啦,你也可以用ysKuo字典的方式(把全台灣國的鄉鎮市村里都做成一個字典,各別套去"扣除"原始的address
不過,要是萬一地名更改或是增刪的話,會有點麻煩
b7307024
一般會員


發表:9
回覆:21
積分:6
註冊:2005-07-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-23 16:52:02 IP:220.135.xxx.xxx 訂閱
謝謝大大喔!我後來問其他大大後,解決了!
程式碼如下:

title= "文件編號,姓名,身分證(護照)號碼,出生年月日,航班,入境日期,居住縣市,居住鄉鎮市區,在臺聯絡地址\n";
FileWriter fw = new FileWriter("c://表單查詢CSV報表.csv");
for (int i = 0 ; i < title.length(); i ){<br /> fw.write(title.charAt(i));
}

while (rs.next()) {
//抓取資料庫欄位資料
docid = rs.getInt("DocID");
name = rs.getString("FieldName1");
passport = rs.getString("FieldName3");
birth = rs.getDate("FieldName4");
schedul = rs.getString("FieldName6");
indate = rs.getDate("FieldName5");
add_tmp = rs.getString("FieldName7");
address = add_tmp.replace("郵遞區號", "");

//判斷縣市
if (address.indexOf("縣")!= -1){
city = address.split("縣");
country = city[0] "縣";
if(country.length()>=3){
country1 = country.substring(country.length()-3,country.length());
}
}
else if (address.indexOf("市")!= -1){
city = address.split("市");
country = city[0] "市";
if(country.length()>= 3){
country1 = country.substring(country.length()-3,country.length());
}
}
else {
country1 = "";
}

//判斷鄉鎮里區
if (address.indexOf("鄉")!= -1){
area1 = address.split("鄉");
area2 = area1[0] "鄉";
if(area2.length()>= 3){
area3 = area2.substring(area2.length()-3,area2.length());
}
}
else if (address.indexOf("里")!= -1){
area1 = address.split("里");
area2 = area1[0] "里";
if(area2.length()>= 3){
area3 = area2.substring(area2.length()-3,area2.length());
}
}
else if (address.indexOf("區")!= -1){
area1 = address.split("區");
area2 = area1[0] "區";
if(area2.length()>= 3){
area3 = area2.substring(area2.length()-3,area2.length());
}
}
else {
area3 ="";
}

//輸出csv格式
full = docid "," name "," passport "," birth "," schedul "," indate "," country1 "," area3 "," address "\n";
out.println(full "
");

for (int j = 0; j < full.length(); j ) {
fw.write(full.charAt(j));
}
}

系統時間:2024-05-05 23:32:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!