从.txt中删除相同的子网Proxys

时间:2018-05-09 16:52:25

标签: java

我想从.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

我需要输出

  

19.15.15.90:61234

     

25.25.24.15:8998

     

210.192.38.25:8998

如果代理删除了dosnt matther,只需要从每个子网中保留1

subnet =前3个数字相同。

PS:抱歉我的英语/解释很糟糕。

1 个答案:

答案 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));,但在那里做任何必要的事情。

Example

1 可能有我遗漏的边缘情况,但是由你决定

2 <子> Credit where credit is due