现在有如下需求:
一个号码文件,形如:
13000000000
13000000001
......
一个号段文件,形如:号段|省份|城市
135010,北京,北京

比如输入一个条件,过滤掉内蒙的号段。请问如何快捷实现,看看大家没有做过类似需求的经验可分享的。
不用数据,只用java实现。本人只能想到遍历。
静候佳音,欢迎沟通。

解决方案 »

  1.   

    肯定要遍历的,如果想避免多次读文件就把信息读到内存中操作
    或者写个bat脚本
    for /f "tokens=1,* delims=, " %%i in ('findstr 内蒙 号段文件') do (
        findstr -v %%i 号码文件 >> tmp.txt
    )
    然后读取tmp.txt
      

  2.   

    用正则表达式,不过你这个得配合数据库或者有txt的数据文件
    就可以比较快的过滤掉
      

  3.   

    只用java实现,那就自己遍历文件
    Scanner sc = new Scanner(new FileInputStream("号段文件"));
    List<String> filter = new ArrayList<String>();
    while (sc.hashNextLine()) {
        String buf = sc.nextLine();
        if (buf.matches("\\d+,.*?内蒙.*")) {
            filter.add(buf.split(",")[0]);
        }
    }
    sc.close();
    Scanner sc = new Scanner(new FileInputStream("号码文件"));
    List<String> number = new ArrayList<String>();
    while (sc.hashNextLine()) {
        String buf = sc.nextLine();
        boolean flag = false;
        for (String f : filter) {
            if (buf.startsWith(f)) {
                flag = true;
                break;
            }
        }
        if (!flag) number.add(buf);
    }
    sc.close();