एक </ string> सूची में एक सीमांकित स्ट्रिंग को विभाजित () कैसे करें


139

मेरे पास यह कोड था:

    String[] lineElements;       
    . . .
    try
    {
        using (StreamReader sr = new StreamReader("TestFile.txt"))
        {
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                lineElements = line.Split(',');
                . . .

लेकिन फिर सोचा कि शायद मुझे इसके बजाय एक सूची के साथ जाना चाहिए। लेकिन यह कोड:

    List<String> listStrLineElements;
    . . .
    try
    {
        using (StreamReader sr = new StreamReader("TestFile.txt"))
        {
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                listStrLineElements = line.Split(',');
. . .

... मुझे देता है, " स्पष्ट रूप से टाइप नहीं कर सकता 'स्ट्रिंग []' को 'System.Collections.Generic.ist" "

जवाबों:


321

string.Split()एक सरणी देता है - आप इसका उपयोग करके सूची में परिवर्तित कर सकते हैं ToList():

listStrLineElements = line.Split(',').ToList();

ध्यान दें कि फ़ंक्शन System.Linqको एक्सेस करने के लिए आपको आयात करने की आवश्यकता है .ToList()


65
शायद है कि आप यहां उल्लेख करना चाहिए नाम स्थान System.Linq का उपयोग करने की
डॉ निश्चयात्मक

3
@ साइरफानlistStrLineElements = line?.Split(',').ToList();
विनिगास

62

या तो उपयोग करें:

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

या LINQ से:

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

या विशिष्ट कार्यान्वयन पर भरोसा न करने के लिए अपना कोड बदलें:

IList<string> list = array; // string[] implements IList<string>

11

नाम स्थान का उपयोग करके शामिल करें System.Linq

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

आप प्रत्येक आइटम के माध्यम से पुनरावृत्ति के लिए आसानी से इसका उपयोग कर सकते हैं।

foreach(string str in stringList)
{

}

String.Split() एक सरणी देता है, इसलिए इसका उपयोग करके सूची में परिवर्तित करें ToList()


6

बस यू के साथ उपयोग कर सकते हैं using System.Linq;

List<string> stringList = line.Split(',')     // this is array
 .ToList();     // this is a list which you can loop in all split string

6

इस लाइन को आज़माएं:

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

3

यह एक सीएसवी फ़ाइल पढ़ेगा और इसमें एक सीएसवी लाइन फाड़नेवाला शामिल है जो दोहरे उद्धरण चिह्नों को संभालता है और यह पढ़ सकता है भले ही एक्सेल में यह खुला हो।

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

2
string[] thisArray = myString.Split('/');//<string1/string2/string3/--->     
List<string> myList = new List<string>(); //make a new string list    
myList.AddRange(thisArray);    

स्ट्रिंग सूची प्राप्त AddRangeकरने string[]और प्राप्त करने के लिए उपयोग करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.