我想从.txt文件中删除相同的子网代理
txt.file = proxy.txt
19.15.15.90:61234
19.15.15.29:28010
19.15.15.80:8998
19.15.15.102:8998
25.25.24.15:8998
25.25.24.80:8998
210.192.38.25:8998
210.192.38.29:8998
我需要输出
如果代理删除了dosnt matther,只需要从每个子网中保留119.15.15.90:61234
25.25.24.15:8998
210.192.38.25:8998
subnet =前3个数字相同。
PS:抱歉我的英语/解释很糟糕。
答案 0 :(得分:0)
一个可能的解决方案 1 是将所有项目添加到List
,对列表进行排序,然后迭代列表检查是否第一个字符与上一个条目相同,如果没有,则打印出来。
首先,我们需要在此场景 2 中获取.
的第三个索引:
public static int nthIndexOf(String text, char needle, int n) {
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) == needle) {
n--;
if (n == 0) {
return i;
}
}
}
return -1;
}
然后简单地执行上面提到的迭代:
for (int i = 1; i < list.size(); i++) {
int pos = nthIndexOf(list.get(i), '.', 3);
if (!list.get(i).substring(0, pos).equals(list.get(i - 1).substring(0, pos))) {
System.out.println(list.get(i));
}
}
哦,并且只打印第一个条目,因为它将是独一无二的,因为它尚未与任何东西进行比较。
当然,我只是打印System.out.println(list.get(i));
,但在那里做任何必要的事情。
1 可能有我遗漏的边缘情况,但是由你决定
2 <子> Credit where credit is due 子>