如何识别两个字符串之间的特定字符串

时间:2013-06-13 10:09:45

标签: java regex

首先我有两个字符串:注册ID和用户名。这两个字符串是连接在一起的。

为什么连接两个字符串,因为有些时候用户名相同但注册ID不同,所以

我有这段代码:

public ArrayList getStudentUser(int check,int userid,int mgmtid)
{
    ArrayList companyList = new ArrayList();
    Session session = null;
    PreparedStatement pst = null;
    ResultSet rst = null;
    try {
    session = HibernateUtil.getSession();
    if(check==1){
        String query = "select a.firstname,a.lastName,b.RegistarionId from t_vs_users a inner join t_vs_userdetails b on b.UserId=a.User_ID  where a. RoleId=5 and  SourceId=? and a.User_ID not in (?)";
        pst = session.connection().prepareStatement(query);
        pst.setInt(1, mgmtid);
        pst.setInt(2, userid);
        rst = pst.executeQuery();
        while(rst.next()) {
            companyList.add(rst.getString("firstname")+""+(rst.getString("lastName"))+","+rst.getString("RegistarionId"));
        }
    } else {
        String query = "select a.firstname,a.lastName,b.RegistarionId from t_vs_users a inner join t_vs_userdetails b on b.UserId=a.User_ID  where a. RoleId=5 and  SourceId=? and a.User_ID not in (?)";
        pst = session.connection().prepareStatement(query);
        pst.setInt(1, mgmtid);
        pst.setInt(2, userid);
        rst = pst.executeQuery();
        while(rst.next()) {
            companyList.add(rst.getString("RegistarionId")+","+(rst.getString("firstname"))+""+rst.getString("lastName"));
        }   
    }
    }catch(Exception e)
    {
    e.printStackTrace();
    }
    return companyList;
}

public boolean checkIfNumber(String in) {
      try {
          Integer.parseInt(in);
      } catch (NumberFormatException ex) {
          return false;
      }
      return true; 
}

我进入连接字符串getStudentUser,但我只想注册id如何分割

1 个答案:

答案 0 :(得分:2)

您已将值作为查询中的单独实体。您必须提出这个问题,因为您坚持要将这些值加入String,并将其作为List返回。

companyList.add(rst.getString("firstname")+""+(rst.getString("lastName"))+","+rst.getString("RegistarionId"));

我认为更好的解决方案是创建某种对象,将值作为单独的数据成员,并返回List个实例而不是String

你正在使用Hibernate。这是一个ORM解决方案 - 对象关系映射。你的对象在哪里?我要么放弃Hibernate,要么开始编写对象。您在发布的代码中没有太多受益。

String对任何事物都不是一个好的抽象。它只不过是原始的。如果您开始考虑对象而不是基元,那么您将编写更好的代码。

这是该模型对象的开始:

package model;

public class Student {
    private Long id;
    private String firstName;
    private String lastName;
    // Add the rest
}

和DAO:

package persistence;

public interface StudentDao {
    List<Student> find();
    Student find(Long id);
    List<Student> find(String lastName);
}

但是,如果必须,请使用split()函数除以逗号分隔的字符串:

String [] tokens = result.split(",");

你必须找出身份证的位置。

如果您忘记了逗号,就像您在第一次查询后所做的那样,这将无效。我认为这是一个错字。

我也推荐StringBuilder