读取要放入数组的文本文件

本文关键字:文本 文件 数组 读取 | 更新日期: 2023-09-27 18:10:26

我正在尝试读取文本文件并将数据扔到字符串数组中。我需要这个来读取文本文件和分裂后,每','。之后,可以将该数据(逗号之前的数据)插入到另一个字符串数组中。我已经尝试过了,但是我得到了一个错误"不能隐式地将字符串[]转换为字符串"。我想这和我的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

欢呼

读取要放入数组的文本文件

您尝试将字符串数组分配给字符串(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(',');
}

但是这不是很有效因为它会读取整个文件即使你只想要第一行的名字

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();

你可以直接使用

 string[] lines = System.IO.File.ReadAllLines("../../Privileges.txt");
 string[][] names;
 for(int i=0; i<lines.length; i++)
     names[i] = lines[i].Split(',');

需要为names变量声明一个多维数组,因为它需要为txt文件的每行存储不同的数组

string[][] names = new string[lines.Count()][];

试试这个:

string[] names = File.ReadAllText("../../Privileges.txt").Split(',');