2012-10-15 184 views
0

我。首先表包含有目的地電話號碼和第二個表包含「AREACODE」它有areacodes「目標」一欄兩個數據庫表的精確值。如何匹配包含在一個字符串到另一個字符串

假設:目標數= '001891191080' AREACODE:001,0018,00185等

現在的問題是這一點,目的地號碼被匹配001 AREACODE代替0018 ..

for (int i = 10; i >= 0; i--) { 
     try { 
      String ss = destination.substring(0, i); 
      Statement st = null; 
      ResultSet rs = null; 

      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/asteriskcdrdb", "root", "techsoft"); 
      st = con.createStatement(); 
      rs = st.executeQuery("Select * from sp1 where areacode like '" + ss + "'"); 
      while (rs.next()) { 
       areacode = rs.getString("AreaCode"); 

在這裏先生根據我的需要我採取的目的地價值和檢查與循環從最後一次開始,但一旦匹配的第一個值它跳過,並沒有檢查其他和確切的可能性... 如何匹配的確切值出於如此多的可能性... 任何h ELP將高度讚賞.. Thanx提前

+0

可以發表一些代碼嗎? – aradhak

+0

@subodh先生,我貼我的代碼和邏輯 – Adarsh

+0

@Aswathi先生,我貼我的代碼 – Adarsh

回答

1
Destination number='001891191080' Areacode :001,0018 

通過使用String#subString(begin index,End index)可以使短字符串,並嘗試同時匹配。

你不應該創建環路連接和statement`。

+0

先生,我在我的代碼中嘗試了同樣的事情。現在我發佈我的代碼plz檢查它的先生。 – Adarsh

0

首先排序基於字符串的長度的「AREACODE」(多到少),則檢查是否匹配在「目的地號碼」。

0

開始從大字符串匹配例如第一

String destNumber = "001891191080"; 
    String[] areaCodes = new String[]{ "001","0018"}; 

    if(destNumber.indexOf(areaCodes[1])>=0){ //<- use 0018 first 
    //.... 
    }else if(destNumber.indexOf(areaCodes[0])>=0){ 
    //... 
    } 
+1

負面選民:請添加一些評論,以幫助我瞭解差距/問題。 –

+0

它沒有工作 – Adarsh

+0

@Adarsh你可以請你分享你寫的代碼(我沒有在你的問題中看到相關的代碼),什麼不工作? –

0

你可以嘗試使用這個查詢嗎?

"Select * from sp1 where areacode like '" + ss + "%' order by areacode desc" 

所以,應該給你

00185 
0018 
001 
在結果

和比較將返回從列表中的第一個值。

+0

謝謝Sir..but將匹配與araecode初始值,一旦獲得araecode該值將跳過找到確切之一,將採取一個 – Adarsh

+0

這是否意味着u有一個確切的價值相匹配? – aradhak

+0

是的,我有確切的一個匹配.. – Adarsh

相關問題