Java手机号段过滤问题
现在有如下需求:一个号码文件,形如:
13000000000
13000000001
......
一个号段文件,形如:号段|省份|城市
135010,北京,北京
。。。。。。。
。。。。。。
比如输入一个条件,过滤掉内蒙的号段。请问如何快捷实现,看看大家没有做过类似需求的经验可分享的。
不用数据,只用java实现。本人只能想到遍历。
静候佳音,欢迎沟通。 --------------------编程问答-------------------- 如果是多个手机号,肯定要一个一个过滤吧,当然应该遍历一遍。每一个手机号用正则匹配一下。
或者多个手机号有规律,比如排序下来,然后取大于多少,小于多少之间的? --------------------编程问答-------------------- 肯定要遍历的,如果想避免多次读文件就把信息读到内存中操作
或者写个bat脚本
for /f "tokens=1,* delims=, " %%i in ('findstr 内蒙 号段文件') do (
findstr -v %%i 号码文件 >> tmp.txt
)
然后读取tmp.txt --------------------编程问答-------------------- 用正则表达式,不过你这个得配合数据库或者有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();
或者多个手机号有规律,比如排序下来,然后取大于多少,小于多少之间的?
补充:Java , Java SE