簡體   English   中英

c#將textfile添加到二維數組中

[英]c# add textfile to 2 dimensional array

我正在嘗試讀取一個文本文件,其中包含一個二維數組的代理。

文本文件如下所示:

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)
        {

        }
    }
}

如果您不希望文件太大,可以使用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]);
}

試試這個:

    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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM