簡體   English   中英

將我列表中的字符串轉換為列表 c#

[英]convert the strings in my list to a list c#

我對此很陌生,我已經在統一中做了一點 C#,但從來沒有真正在 VS 中。

我有一個大致如下的 txt 文件:

星期一;8;服務器 1、服務器 2、服務器 3

星期二;9;server3,server4

星期三;8;服務器 1、服務器 2、服務器 4

我將其分為 3 個列表,一個與天(星期一)...一個與小時(8)...和一個與服務器(服務器 1、服務器 2、服務器 3),但我想將此服務器字符串轉換為獨特的列表,

例如,我想要一個 list1 包含周一的所有服務器(server1、server2、server3),一個 list2 包含周二的所有服務器(server3、server4)。

這些服務器名稱用逗號分隔,我想將每個字符串拆分為一個唯一列表

我知道我不是很清楚,請詢問任何規格

List<string> plages_horaires_ouverture = File.ReadAllLines(@"file.txt").ToList();


        foreach (var fileLine in plages_horaires_ouverture)
        {
            var splitLignes = fileLine.Split(new[] { ";" }, StringSplitOptions.None);
            
            listeJoursOuverture.Add(splitLignes[0]);
            listeHeuresOuverture.Add(splitLignes[1]);
            listeServeursOuverture.Add(splitLignes[2]);


        }

此代碼將 txt 文件拆分為 3 個包含字符串的單獨列表,現在我想將列表“listeServeursOuverture”(對不起法國名稱)的每個元素(字符串)轉換為唯一列表。 此列表中的每個元素都類似於“server1,server2,server4”或“server2,server3”,並用逗號分隔

有任何想法嗎? 我嘗試了很多東西,但都沒有奏效,這個問題當然很愚蠢,對此我很抱歉

雷諾

使用List.AddRange()

List<String> servers = new List<String>();
servers.AddRange(splitLignes[2].Split(new[] { "," }, StringSplitOptions.None));

我沒有將您的數據分散到不同的列表中,而是有一個列表(或者至少是某種 DataStructure。您以后可能會發現字典很有用,也許)。

在那個列表中,我會有一個 Model 類的實例,例如這個:

public class MyModel
{
   public string Day {get; set;}
   public int Hour {get; set;}
   public List<string> Servers {get; set;} = new List<string>();
}

然后,如果我正確閱讀了問題,您可以根據需要查找服務器列表。

填充可能是這樣的:

foreach (var fileLine in plages_horaires_ouverture)
{
    var splitLignes = fileLine.Split(new[] { ";" }, StringSplitOptions.None);
    
    var model = new MyModel{
        Day = splitLignes[0],
        Hour = int.Parse(splitLignes[1].Trim())
    };
    model.Servers.AddRange(splitLignes[2].Split(new[] { "," }, StringSplitOptions.None));

    listeOverture.Add(model);

    // don't need these anymore.        
    // listeJoursOuverture.Add(splitLignes[0]);
    // listeHeuresOuverture.Add(splitLignes[1]);
    // listeServeursOuverture.Add(splitLignes[2]);
}

我會在這里使用字典:

    List<string> plages_horaires_ouverture = File.ReadAllLines(@"file.txt").ToList();

    Dictionary<KeyValuePair<string, string>,List<string>> servers = new Dictionary<KeyValuePair<string, string>,List<string>>
    foreach (var fileLine in plages_horaires_ouverture)
    {
        var splitLignes = fileLine.Split(new[] { ";" }, StringSplitOptions.None);
        
        KeyValuePair<string, string> key = new KeyValuePair<string, string>(splitLignes[0], splitLignes[1]);
        List<string> serversForDay = splitLignes[2].Split(new[] { "," }, StringSplitOptions.None);

        servers.Add(key, serversForDay);
    }

您可以根據需要編輯名稱和類型。 創建一個類對象以根據需要對數據進行排序,然后創建一個返回該類列表的方法。 當您稍后需要處理代碼時,這對您來說更清楚。

public List<DataModel> GetListFromData()
        {

            List<string> plages_horaires_ouverture = File.ReadAllLines( @"file.txt" ).ToList();

            List<DataModel> list = new List<Dd>();
            foreach ( var fileLine in plages_horaires_ouverture )
            {
                var splitLignes = fileLine.Split(  ";" , StringSplitOptions.None );

                List<string> d = splitLignes[0].Split( "," ).ToList();
                List<string> h =splitLignes[1].Split( "," ).ToList();
                List<string> s =splitLignes[2].Split( "," ).ToList();
                list.Add( new DataModel( d , h[0] , s ) );
              
            }
            return list;
        }
        class DataModel
        {
            public DataModel( List<string> days,string hour  , List<string> servers )
            {
                Hour = hour;
                Days = days;
                Servers = servers;
            }

            public string Hour { get; set; }
            public List<string> Days { get; set; }
            public List<string> Servers { get; set; }
        }

暫無
暫無

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

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