c#查找数组的某些字符串

时间:2016-03-05 08:23:38

标签: c# arrays

我正在制作代理抓取程序,我需要在数组中找到代理

以下是我想要离开这一行的一个例子:

document.write('77.237.138.51')

我想删除document.write('" and "'),因此它只显示代理

这是我目前的代码:

client.DownloadFile("http://www.gatherproxy.com/sockslist", "source.txt"); 
string [] lines = File.ReadAllLines("source.txt");
string start = "document.write('";
string end = "')";

现在我该怎么做才能删除开始和结束并返回中间元素(代理)

回复Domysee

using (WebClient client = new WebClient())
            client.DownloadFile("http://www.gatherproxy.com/sockslist", "source.txt");
            string[] lines = File.ReadAllLines("source.txt");
        for (int i = 0; i < 1000; i++)
        {
            string[] ipAddresses = lines.Select(l => Regex.Match(l, @"(\d+\.){3}\d+").Value).ToArray();
            i++;
            string[] port = lines.Select(l => Regex.Match(l, @"(\d+\.){3}\d+").Value).ToArray();
            Console.WriteLine(ipAddresses + ":" + port);
        }
            Console.ReadLine();

2 个答案:

答案 0 :(得分:1)

您可以将Regex用于此目的。

string[] ipAddresses = lines.Select(l => Regex.Match(l, @"(\d+\.){3}\d+").Value).ToArray();

正则表达式将提取与ip地址对应的位。

ipAddresses是一个字符串数组。如果你将它与另一个字符串连接(正如你在Console.WriteLine(ipAddresses + ":" + port);中所做的那样),将调用它的ToString方法,即“System.String []”。

要输出ip地址,你必须迭代数组。

string[] lines = File.ReadAllLines("source.txt");
string[] ipAddresses = lines.Select(l => Regex.Match(l, @"(\d+\.){3}\d+").Value).ToArray();
for(int i = 0; i < ipAddresses.Length; i++){
    Console.WriteLine(ipAddresses[i]);
}

答案 1 :(得分:0)

您可以使用LINQ:

string[] lines = File.ReadAllLines("source.txt");

string[] ipAddresses = lines.Select(line => String.Join("", line.SkipWhile(c => c != '\'')
                                                                .Skip(1)
                                                                .TakeWhile(c => c != '\'')))
                            .ToArray();