假如有一个hashtable以文件的名字为key,文件的绝对路径为value
现在需要通过一个输入的不完全的文件名查找系统中是否存在该文件该怎么做?
比如hashtable中有放进去了两对值put("abc.txt","c:\abc.txt");put("def.txt","c:\def.txt"),
然后输入"bc"要求查找是不是有文件名为*bc.*的文件存在该怎么实现。
Pattern.compile("\\w*["+scanner.next().trim()+"]\\w*$")既符合这个正则表达式的(不考虑文件扩展名)

解决方案 »

  1.   

    不用正则表达式不行吗?                  Hashtable ht = new Hashtable();
    ht.put("abc.txt", "c:\\abc.txt");
    ht.put("def.txt", "c:\\def.txt");
    Set set = ht.keySet();
    Iterator it = set.iterator();
    while(it.hasNext()) {

    String key = (String) it.next();
    if (key.indexOf("ab") != -1) {

    System.out.println(ht.get(key));
    }
    }
      

  2.   

                    String obj = "";
    Enumeration<String> e;
    while (true) {
    if (scanner.hasNext(inputFormat)) {
    e = index.keys();
    Pattern pattern1 = Pattern.compile("\\.");
    Matcher matcher1 = pattern1.matcher(scanner.next().trim());
    Pattern pattern = Pattern.compile("\\w*\\.?\\w*"
    + matcher1.replaceAll("\\\\\\.") + "\\w*\\.?\\w*$");
    Matcher matcher;
    while (e.hasMoreElements()) {
    obj = e.nextElement();
    matcher = pattern.matcher(obj);
    if (matcher.matches()) {
    if (!index.get(obj).isEmpty()) {
    ht.get(obj);

    }
    }
    }

    麻烦了点 但也还是实现了..