现在我有这么一个需求。
有一个list,存有所有图片的名称(如:EB874657463212.jpg),在jsp页面有一个搜索框,在里面可以填入图片的名称(名称不带有后缀,如:EB874657463212),点击搜索,可以在list当中把对应的图片搜索出来,搜索结果只用返回图片名称就可以了,不用显示图片。另外,这是精确搜索,还有就是希望可以根据开头的两个字母搜索,将所有以“EB”、“FA”这样开头的图片全部显示出来,也是只显示文件名,不用显示后缀。
我现在的思路是,首先要对list里面的元素进行处理,把后缀去掉,因为搜索传入的只有名称,而不带“.jpg”后缀。
但是关键的搜索我不知道如何实现。其实应该就是一个匹配的功能。还有很重要的一点,这颗不是去数据库 里面搜索,这是搜索list里面的元素,并且把那条元素提出来。忘高手指点啊。有代码最好了,即使是只有“搜索”的代码也万分感谢啊。

解决方案 »

  1.   

    public static  void getTrue(List<String> values ,List<String> trueChars){

    for (String string : values) {
    for (String trueChar : trueChars) {
    if (string.indexOf(trueChar) == 0) {
    System.out.println(string);
    }
    }
    }
    }
    values 传你要筛选的list,trueChars传你要过滤的字符串
      

  2.   

    indexOf()方法返回不应该是索引吗??这怎么匹配哦
      

  3.   

    你不是要开头的哇,肯定是要返回索引啊,索引还会0,说明你要匹配的字符就是开头的string.indexOf(trueChar) == 0
      

  4.   

    模糊查询用like。
    去除后缀 用.substring( , );   
      

  5.   

    文档上说indexOf返回:“指定字符串在实例中的第一个匹配项的索引”,那索引等于0,说明从第一个字符串就匹配了。那后面的字符串呢?他还会匹配吗?
      

  6.   

    不会匹配了,只会匹配第一次出现的,如果你还想匹配,那就要用substring和indexOf以及循环的连用了
      

  7.   

    indexOf  匹配的是一个字符串,比如 “abc”   那么他在匹配的时候只找  abc 这个字符串,找到了就返回索引下标
      

  8.   

    也就是说如果我需要匹配的是“EB874657463212”,那么在“EB874657463212.jpg”这个里面,只要前面的匹配上了,后面的.jpg就不会匹配了?
      

  9.   

    我突然有一个很疑惑的问题,需要匹配的是比如说是“2323”,我的list里面有“41212 4546454 78884 9545 2323 54645”,这样的话“2323”明显不在0的位置上哦?这样的话string.indexOf(trueChar)返回的也就不是0,那这个样如何把我想要的这个2323提出来返回呢?
      

  10.   

    那你肯定要写方法了啊
    public  static String search(String values ,String value){
    int index = values.indexOf(value);
    return values.substring(index, index+value.length());
    }
      

  11.   

    //你查询出来的list集合
    List<Student> list=session.createQuery("From Student").list();
    //模糊查询传进来的字符串
    String name="0";

    for(Student s:list)
    {
    System.out.println("截取前姓名:"+s.getStuName());

    int len=s.getStuName().length()-4;
    String str=s.getStuName().substring(0, len);
    System.out.println("截取后姓名:"+str); int s1=s.getStuName().indexOf(name);
    if(s1>0)
    {
    System.out.println("模糊查询名:"+str);
    }
    }
      

  12.   

    补充一下,for循环里面的对象记得要改一下!