C# 从txt文件读取到数组/列表<&燃气轮机;

C# 从txt文件读取到数组/列表<&燃气轮机;,c#,arrays,list,C#,Arrays,List,我需要读取所有的.txt文件并将数据保存到数组/列表中。文件如下所示: row11 row12 row13 row21 row22 row23 row31 row32 row33 字符串之间只有空格 接下来,我将把数组/列表中的数据插入mysql,但这不是问题。 谢谢 编辑:我需要在mysql like.txt文件中插入3列 第一个参数指定要使用空格和制表符拆分字符串,第二个参数指定忽略空条目(对于条目之间有多个空格的情况)时使用 使用此代码: var li

我需要读取所有的.txt文件并将数据保存到数组/列表中。文件如下所示:

row11    row12    row13
row21    row22    row23
row31    row32    row33
字符串之间只有空格

接下来,我将把数组/列表中的数据插入mysql,但这不是问题。 谢谢

编辑:我需要在mysql like.txt文件中插入3列

第一个参数指定要使用空格和制表符拆分字符串,第二个参数指定忽略空条目(对于条目之间有多个空格的情况)时使用

使用此代码:

var lines = System.IO.File.ReadAllLines(@"D:\test.txt");
var data = new List<List<string>>();
foreach (var line in lines)
{
    var split = line.Split(new[]{' ', '\t'}, StringSplitOptions.RemoveEmptyEntries);
    data.Add(split.ToList());
}
var lines=System.IO.File.ReadAllLines(@“D:\test.txt”);
var data=新列表();
foreach(行中的var行)
{
var split=line.split(新[]{'','\t'},StringSplitOptions.RemoveEmptyEntries);
data.Add(split.ToList());
}
第一个参数指定要使用空格和制表符拆分字符串,第二个参数指定忽略空条目(对于条目之间有多个空格的情况)

使用此代码:

var lines = System.IO.File.ReadAllLines(@"D:\test.txt");
var data = new List<List<string>>();
foreach (var line in lines)
{
    var split = line.Split(new[]{' ', '\t'}, StringSplitOptions.RemoveEmptyEntries);
    data.Add(split.ToList());
}
var lines=System.IO.File.ReadAllLines(@“D:\test.txt”);
var data=新列表();
foreach(行中的var行)
{
var split=line.split(新[]{'','\t'},StringSplitOptions.RemoveEmptyEntries);
data.Add(split.ToList());
}

您可以使用
File.ReadLines()
从文件中读取行,然后使用
Regex.Split()
将每行拆分为多个字符串:

static IEnumerable<String> SplitLines(string path, string splitPattern)
{
    foreach (string line in File.ReadAllLines(path))
        foreach (string part in Regex.Split(line, splitPattern))
            yield return part;
}
您可以使用扩展方法将其转换为列表:

List<string> individualStrings = SplitLines(@"D:\test\rows.txt", @"\s+").ToList();
List individualStrings=SplitLines(@“D:\test\rows.txt”,@“\s+”).ToList();

您可以使用
File.ReadLines()
从文件中读取行,然后使用
Regex.Split()
将每行拆分为多个字符串:

static IEnumerable<String> SplitLines(string path, string splitPattern)
{
    foreach (string line in File.ReadAllLines(path))
        foreach (string part in Regex.Split(line, splitPattern))
            yield return part;
}
您可以使用扩展方法将其转换为列表:

List<string> individualStrings = SplitLines(@"D:\test\rows.txt", @"\s+").ToList();
List individualStrings=SplitLines(@“D:\test\rows.txt”,@“\s+”).ToList();

只要“值”中没有空格,那么简单的逐行解析器就可以工作

一个简单的例子

var reader = new StreamReader(filePath);

var resultList = new List<List<string>>();

string line;

while ((line = reader.ReadLine()) != null)
{
    var currentValues = new List<string>();

    // You can also use a StringBuilder
    string currentValue = String.Empty;

    foreach (char c in line)
    {
        if (Char.IsWhiteSpace(c))
        {
            if (currentValue.Length > 0)
            {
                currentValues.Add(currentValue);

                currentValue = String.Empty;
            }
            continue;
        }

        currentValue += c;
    }

    resultList.Add(currentValues);
}
var reader=newstreamreader(filePath);
var resultList=新列表();
弦线;
而((line=reader.ReadLine())!=null)
{
var currentValues=新列表();
//也可以使用StringBuilder
字符串currentValue=string.Empty;
foreach(行中的字符c)
{
if(Char.IsWhiteSpace(c))
{
如果(currentValue.Length>0)
{
currentValues.Add(currentValue);
currentValue=String.Empty;
}
继续;
}
电流值+=c;
}
结果列表.Add(当前值);
}

只要“值”中没有空格,那么简单的逐行解析器就可以工作

一个简单的例子

var reader = new StreamReader(filePath);

var resultList = new List<List<string>>();

string line;

while ((line = reader.ReadLine()) != null)
{
    var currentValues = new List<string>();

    // You can also use a StringBuilder
    string currentValue = String.Empty;

    foreach (char c in line)
    {
        if (Char.IsWhiteSpace(c))
        {
            if (currentValue.Length > 0)
            {
                currentValues.Add(currentValue);

                currentValue = String.Empty;
            }
            continue;
        }

        currentValue += c;
    }

    resultList.Add(currentValues);
}
var reader=newstreamreader(filePath);
var resultList=新列表();
弦线;
而((line=reader.ReadLine())!=null)
{
var currentValues=新列表();
//也可以使用StringBuilder
字符串currentValue=string.Empty;
foreach(行中的字符c)
{
if(Char.IsWhiteSpace(c))
{
如果(currentValue.Length>0)
{
currentValues.Add(currentValue);
currentValue=String.Empty;
}
继续;
}
电流值+=c;
}
结果列表.Add(当前值);
}

根据Amadeusz的回答,这里有一个漂亮的一行:

var lines = File.ReadAllLines(fileName).Select(l => l.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries)).SelectMany(words => words);

根据Amadeusz的回答,这里有一个漂亮的一行:

var lines = File.ReadAllLines(fileName).Select(l => l.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries)).SelectMany(words => words);

File.ReadLines、String.Split、List或List就足够了。开始编码。解析这是一个使用
StringReader
逐行读取并在空格上拆分的问题,同时删除条目
someLine.Split(新字符串[]{”“},StringSplitOptions.RemoveEmptyEntries)@CharlesMager是的,我确定。“我从来没有这样做过。你能给我解释一下密码吗?感谢您的支持。File.ReadLines、String.Split、List或List就足够了。开始编码。解析这是一个使用
StringReader
逐行读取并在空格上拆分的问题,同时删除条目
someLine.Split(新字符串[]{”“},StringSplitOptions.RemoveEmptyEntries)@CharlesMager是的,我确定。“我从来没有这样做过。你能给我解释一下密码吗?谢谢你的意愿,谢谢你的回答。现在我有了列表中的所有行,但如何从列表中选择column1(第11行、第21行、第31行)?您可以将
列表
转换为二维字符串数组(即
字符串[,]
字符串[][]
),如果使用
字符串[][]表=数据更方便的话。选择(a=>a.ToArray()).ToArray()
,然后使用
for
循环使用
数据[i][j]
,在其中保持一个参数常量(行为
i
,列为
j
),根据您的使用情况,2D数组可能是最佳选择。但是如果您使用的是列表,请使用Linq访问数据(更多信息请参见James Ko的回答)var firstColumn=data.Select(line=>line.First());var thirdColumn=data.Select(line=>line[2]);谢谢你的回答。现在我有了列表中的所有行,但如何从列表中选择column1(第11行、第21行、第31行)?您可以将
列表
转换为二维字符串数组(即
字符串[,]
字符串[][]
),如果使用
字符串[][]表=数据更方便的话。选择(a=>a.ToArray()).ToArray()
,然后使用
for
循环使用
数据[i][j]
,在其中保持一个参数常量(行为
i
,列为
j
),根据您的使用情况,2D数组可能是最佳选择。但如果您使用的是列表,请使用Linq访问数据(更多信息请参见James Ko的回答)var firstColumn=da