我正在尝试读取文本文件并将数据放入字符串数组中。我需要这个来读取文本文件并在每个','之后拆分。之后,能够通过该数据(从逗号开始)到另一个字符串数组。我试过这个,但是我收到错误“无法将string []隐式转换为字符串。我认为它与我的split方法有关。
这是我的代码:
string[] lines = System.IO.File.ReadAllLines("../../Privileges.txt");
string[] names;
for (int i = 0; i < lines.Length; i++)
{
names[i] = lines[i].Split(',');
}
这是一个帮助进一步理解的例子。一个读取
的.txt文件Joe Dirt,擎天柱,Jake the Snake
我想要制作出来的是:
names[0] = Joe Dirt
names[1] = Optimus Prime
names[2] = Jake the Snake
干杯
答案 0 :(得分:1)
您尝试将字符串数组分配给字符串(split函数返回字符串数组)
你可以创建一个锯齿状的字符串数组,允许你将它们编入索引names[row][col]
或者访问整行(作为数组)names[row]
string[] lines = System.IO.File.ReadAllLines("../../Privileges.txt");
string[][] names = new string[lines.Length][];
for (int i = 0; i < lines.Length; i++)
{
names[i] = lines[i].Split(',');
}
要生成所需的输出,您可以将这些部分连接在一起:
foreach (string[] parts in names)
{
Console.WriteLine(String.Join(" ", parts));
}
如果您不关心名称在哪一行,您只需要文件中所有名称的列表,您可以使用LINQ执行此操作:
string[] names = System.IO.File.ReadAllLines("../../Privileges.txt")
.SelectMany((line) => line.Split(',')).ToArray();
编辑: 要读取特定行上的名称,您可以使用以下函数:
public static string[] GetNamesOnLine(int lineIndex, string filename)
{
string[] lines = System.IO.File.ReadAllLines(filename);
if (lineIndex >= lines.Length)
throw new ArgumentException(String.Format("Line {0} does not exist in file. File contains only {1} rows", lineIndex, lines.Length));
return lines[lineIndex].Split(',');
}
但即使您只想要第一行中的名称,这也不是非常有效,因为它只读取整个文件
答案 1 :(得分:1)
Split()
方法返回string[]
,您将其分配给string
(names[i]
)
由于一行中有很多名字(我怀疑),你应该这样做:
List<string> nameList = new ArrayList<string>();
foreach(string line in lines)
string[] namesLine = line.Split(',');
foreach(string name in namesLine)
nameList.Add(name);
如果您希望将nameList
作为string[]
,则可以执行以下操作:
string[] names = nameList.ToArray();
答案 2 :(得分:0)
你可以使用
string[] lines = System.IO.File.ReadAllLines("../../Privileges.txt");
string[][] names;
for(int i=0; i<lines.length; i++)
names[i] = lines[i].Split(',');
答案 3 :(得分:-1)
您需要为names变量声明一个多维数组,因为它需要为txt文件的每一行存储不同的数组
string[][] names = new string[lines.Count()][];
答案 4 :(得分:-2)
试试这个:
string[] names = File.ReadAllText("../../Privileges.txt").Split(',');