【问题标题】:how to match the exact value contained in one string to the other string如何将一个字符串中包含的确切值与另一个字符串匹配
【发布时间】:2012-10-05 01:31:14
【问题描述】:

我有两个数据库表。第一个表包含“目的地”列,其中包含目标电话号码,第二个表包含“区号”,其中包含区号。

假设:目的地号码='001891191080' 区号:001,0018,00185等

现在的问题是目的地号码匹配 001 区号而不是 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");

先生,在这里,根据我的需要,我正在获取目标值并从最后一个开始检查 for 循环。但是一旦它与第一个值匹配,它就会跳过并且不检查其他确切的可能性...... 如何从这么多可能性中匹配确切的值... 任何帮助将不胜感激.. 提前感谢

【问题讨论】:

  • @subodh 先生,我发布了我的代码和逻辑
  • @Aswathi 先生,我发布了我的代码
  • 我的SQL有点生疏了,但是你不能用like '" + ss + "%'来代替吗?
  • 在 For 循环中创建 Connection 对象不是一个好习惯。您可以在循环之前调用 Class.forName() 和 getConnection()。

标签: java string iterator match


【解决方案1】:
Destination number='001891191080' Areacode :001,0018

通过使用String#subString(begin index,End index),您可以制作短字符串并尝试匹配两者。

您不应该在 for 循环中创建连接和语句。

【讨论】:

  • 先生,我在我的代码中尝试了同样的事情。刚才我发布了我的代码,请检查一下先生。
【解决方案2】:

首先根据字符串的长度(从多到少)对“区域代码”进行排序,然后检查“目标编号”中的匹配项。

【讨论】:

    【解决方案3】:

    首先从大字符串匹配开始,例如

       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){
         //...
       }
    

    【讨论】:

    • 负面投票者:请添加一些评论以帮助我了解差距/问题。
    • @Adarsh 您能否分享您编写的代码(我在您的问题中没有看到相关代码)以及什么不起作用?
    【解决方案4】:

    您可以尝试使用此查询吗?

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

    所以这应该给你

    00185
    0018
    001
    

    在结果集中,比较将返回列表中的第一个值。

    【讨论】:

    • 谢谢你,先生..但是它将与araecode匹配起始值,一旦它在araecode中获得该值,它将跳过找到确切的值并采用那个
    • 这是否意味着你有一个确切的值要匹配?
    • 这意味着您有一个期望值与结果集字符串匹配。如果是这样,写一个if条件就这么简单吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多