如何将()分隔的字符串分割为List<

我有这样的代码:

    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(',');
. . .

...给我,"不能隐式地将类型'string[]'转换为'System.Collections.Generic.List'"

481188 次浏览

要么使用:

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

或从LINQ:

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

或者改变你的代码不依赖于特定的实现:

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

string.Split()返回一个数组——你可以使用ToList()将它转换成一个列表:

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

注意,你需要导入System.Linq来访问.ToList()函数。

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

使用AddRange传递string[]并获得一个字符串列表。

包括使用命名空间System.Linq

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

您可以轻松地使用它来遍历每个项。

foreach(string str in stringList)
{


}

String.Split()返回一个数组,因此使用ToList()将其转换为列表

这将读取csv文件,它包括一个处理双引号的csv分行器,即使excel已经打开,它也可以读取。

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

只是你可以用using System.Linq;

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

试试这句台词:

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

我使用这个扩展方法来处理null输入,并删除多余的空白

public static List<string> CsvToList(this string csv)
{
if (string.IsNullOrEmpty(csv))
{
return new List<string>();
}


return csv.Split(',').Select(item => item.Trim()).ToList();
}

注意,如果输入的CSV是:"Apple, Orange, Pear"我们想去掉逗号后的空白。

你可以这样使用 var countryDBs =“myDB ukDB"; < / p >

var countryDBsList = countryDBs.Split(',').ToList();

        foreach (var countryDB in countryDBsList)
{
           

}