当前位置:编程学习 > JAVA >>

Java手机号段过滤问题

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

比如输入一个条件,过滤掉内蒙的号段。请问如何快捷实现,看看大家没有做过类似需求的经验可分享的。
不用数据,只用java实现。本人只能想到遍历。
静候佳音,欢迎沟通。 --------------------编程问答-------------------- 如果是多个手机号,肯定要一个一个过滤吧,当然应该遍历一遍。每一个手机号用正则匹配一下。

或者多个手机号有规律,比如排序下来,然后取大于多少,小于多少之间的? --------------------编程问答-------------------- 肯定要遍历的,如果想避免多次读文件就把信息读到内存中操作
或者写个bat脚本
for /f "tokens=1,* delims=, " %%i in ('findstr 内蒙 号段文件') do (
    findstr -v %%i 号码文件 >> tmp.txt
)

然后读取tmp.txt --------------------编程问答-------------------- 用正则表达式,不过你这个得配合数据库或者有txt的数据文件
就可以比较快的过滤掉 --------------------编程问答-------------------- 肯定要用正则表达式 因为快呢 --------------------编程问答--------------------
引用 3 楼  的回复:
用正则表达式,不过你这个得配合数据库或者有txt的数据文件
就可以比较快的过滤掉


从数据库或者文件读入号码  然后正则过滤   --------------------编程问答-------------------- 写到数据库里 --------------------编程问答-------------------- 只用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();
--------------------编程问答--------------------
引用 7 楼  的回复:
只用java实现,那就自己遍历文件
Java code
Scanner sc = new Scanner(new FileInputStream("号段文件"));
List<String> filter = new ArrayList<String>();
while (sc.hashNextLine()) {
    String buf = sc.nextLine();
    if ……
宝哥下手太快啊,  就是这样的…… --------------------编程问答-------------------- 如果是多个手机号,肯定要一个一个过滤吧,当然应该遍历一遍。每一个手机号用正则匹配一下。

或者多个手机号有规律,比如排序下来,然后取大于多少,小于多少之间的?
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,