c#将textfile添加到二维数组中

时间:2016-12-23 13:04:14

标签: c# arrays

我正在尝试读取一个文本文件,其中包含一个二维数组的代理。

文本文件如下所示:

00.00.00.00:80
00.00.00.00:80
00.00.00.00:80
00.00.00.00:80
00.00.00.00:80

我如何从端口分离ip?`

所以我的数组看起来如下:

[00.00.00.00] [80]

当前代码:

public void readProxyList(string FileName)
{
    using (StreamReader sr = new StreamReader(FileName, Encoding.Default))
    {
        string text = sr.ReadToEnd();
        string[] lines = text.Split('\r');

        foreach (string s in lines)
        {

        }
    }
}

2 个答案:

答案 0 :(得分:6)

如果您不希望文件过大,可以使用File.ReadAllLines读取每一行。然后要拆分,只需使用String.Split与':'作为你的代币。

示例:

var lines = File.ReadAllLines(FileName));
var array = new string[lines.Length,2];
for(int i=0; i < lines.Length; i++)
{
    var temp = lines[i].Split(':');
    array[i,0] = temp[0];
    array[i,1] = temp[1];
}

修改

如果您希望文件可能很大,而不是使用ReadAllLines,则可以使用File.ReadLines。此方法返回IEnumerable<string>,不会立即读取整个文件。在这种情况下,我可能会选择远离2d数组并创建一个简单的类(称之为IpAndPort或类似的东西)并创建一个列表。

示例:

public sealed class IpAndPort
{
    public string Ip { get; private set; }
    public string Port { get; private set; }
    public IpAndPort (string ip, string port)
    {
        Ip = ip;
        Port = port;
    }
}

var list = new List<IpAndPort>();
foreach(var line in File.ReadLines(FileName))
{
    var temp = line.Split(':');
    list.Add(new IpAndPort(temp[0], temp[1]);
}

答案 1 :(得分:0)

试试这个:

    public IEnumerable<string> GetProxyList(string FileName)
    {
        string[] allLines = File.ReadAllLines(FileName);
        var result = new List<string>(allLines.Length);

        foreach (string line in allLines)
        {
            var splittedLine = line.Split(':');
            result.Add($"[{splittedLine[0]}][{splittedLine[1]}]");
        }
        return result;
    }