C# 从txt文件读取到数组/列表<&燃气轮机;
我需要读取所有的.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
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