How to split() a delimited string to a List

前端 未结 7 2316
被撕碎了的回忆
被撕碎了的回忆 2020-12-04 11:30

I had this code:

    String[] lineElements;       
    . . .
    try
    {
        using (StreamReader sr = new StreamReader(\"TestFile.txt\"))
        {
            


        
相关标签:
7条回答
  • 2020-12-04 12:09

    Either use:

    List<string> list = new List<string>(array);
    

    or from LINQ:

    List<string> list = array.ToList();
    

    Or change your code to not rely on the specific implementation:

    IList<string> list = array; // string[] implements IList<string>
    
    0 讨论(0)
  • 2020-12-04 12:12

    Just u can use with using System.Linq;

    List<string> stringList = line.Split(',')     // this is array
     .ToList();     // this is a list which you can loop in all split string
    
    0 讨论(0)
  • 2020-12-04 12:18

    This will read a csv file and it includes a csv line splitter that handles double quotes and it can read even if excel has it open.

        public List<Dictionary<string, string>> LoadCsvAsDictionary(string path)
        {
            var result = new List<Dictionary<string, string>>();
    
            var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            System.IO.StreamReader file = new System.IO.StreamReader(fs);
    
            string line;
    
            int n = 0;
            List<string> columns = null;
            while ((line = file.ReadLine()) != null)
            {
                var values = SplitCsv(line);
                if (n == 0)
                {
                    columns = values;
                }
                else
                {
                    var dict = new Dictionary<string, string>();
                    for (int i = 0; i < columns.Count; i++)
                        if (i < values.Count)
                            dict.Add(columns[i], values[i]);
                    result.Add(dict);
                }
                n++;
            }
    
            file.Close();
            return result;
        }
    
        private List<string> SplitCsv(string csv)
        {
            var values = new List<string>();
    
            int last = -1;
            bool inQuotes = false;
    
            int n = 0;
            while (n < csv.Length)
            {
                switch (csv[n])
                {
                    case '"':
                        inQuotes = !inQuotes;
                        break;
                    case ',':
                        if (!inQuotes)
                        {
                            values.Add(csv.Substring(last + 1, (n - last)).Trim(' ', ','));
                            last = n;
                        }
                        break;
                }
                n++;
            }
    
            if (last != csv.Length - 1)
                values.Add(csv.Substring(last + 1).Trim());
    
            return values;
        }
    
    0 讨论(0)
  • 2020-12-04 12:18
    string[] thisArray = myString.Split('/');//<string1/string2/string3/--->     
    List<string> myList = new List<string>(); //make a new string list    
    myList.AddRange(thisArray);    
    

    Use AddRange to pass string[] and get a string list.

    0 讨论(0)
  • 2020-12-04 12:21

    Try this line:

    List<string> stringList = line.Split(',').ToList(); 
    
    0 讨论(0)
  • 2020-12-04 12:23

    Include using namespace System.Linq

    List<string> stringList = line.Split(',').ToList();
    

    you can make use of it with ease for iterating through each item.

    foreach(string str in stringList)
    {
    
    }
    

    String.Split() returns an array, hence convert it to a list using ToList()

    0 讨论(0)
提交回复
热议问题