如何从带有c#的列表中读取最后三个元素?
我试图编写一个解析器,从列表中读取从第三个到最后一个元素。这是一个数字或什么都没有。这是我的代码:如何从带有c#的列表中读取最后三个元素?,c#,list,C#,List,我试图编写一个解析器,从列表中读取从第三个到最后一个元素。这是一个数字或什么都没有。这是我的代码: public int parseLastId(String filepath) { List<string> lines = new List<string>(); String text = File.ReadAllLines(filepath).ToString(); lines = text.Split(',')
public int parseLastId(String filepath)
{
List<string> lines = new List<string>();
String text = File.ReadAllLines(filepath).ToString();
lines = text.Split(',').ToList();
int id = Convert.ToInt32(lines[lines.Count - 3]);
return id;
}
public int parseLastId(字符串文件路径)
{
列表行=新列表();
String text=File.ReadAllLines(filepath.ToString();
lines=text.Split(',').ToList();
int id=Convert.ToInt32(行[lines.Count-3]);
返回id;
}
文件中的文本如下所示:
1,Joe,2,Jeff,
文件。ReadAllLines
将读取文本文件中的每一行
在文本文件中,只有一行
所以你可以改变
String text = File.ReadAllLines(filepath).ToString();
到
那么你剩下的节目就可以了
惯用C#
需要注意的是,您的代码不是以标准C#风格编写的
特别是:
- 应使用
而不是string
string
- 方法名称应以大写字母开头
- 不需要在
上调用text.Split(',')
.ToList()
nothing
。为此,您需要从方法中返回一个“可为null的int”(int?
),并使用该方法
例如:
public int? ParseLastId(string filepath)
{
var text = File.ReadAllLines(filepath)[0];
var lines = text.Split(',');
if (int.TryParse(lines[lines.Length - 3], out var id)
{
return id;
}
else
{
return null;
}
}
我猜“不返回任何内容”的意思是0
public int parseLastId(string filepath)
{
string text = File.ReadAllText(filepath);
string[] lines = text.Split(',');
return lines.Length >= 3 && int.TryParse(lines[lines.Length - 3], out int id) ? id : 0;
}
因此,示例的预期输出为“2”?C#8。你使用的是什么版本?“这是一个数字或什么都没有。”-这不是用int表示的,除非你定义了一些值来表示“什么都没有”——比如任何负值。或者您可以使用
int?
。从C#8向上(包括C#8),您还可以编写行[^3]
。“对于任何数字n
,索引^n
与序列相同。长度-n
”-谢谢你的回答。你的回答也很有效,谢谢。
public int? ParseLastId(string filepath)
{
var text = File.ReadAllLines(filepath)[0];
var lines = text.Split(',');
if (int.TryParse(lines[lines.Length - 3], out var id)
{
return id;
}
else
{
return null;
}
}
public int parseLastId(string filepath)
{
string text = File.ReadAllText(filepath);
string[] lines = text.Split(',');
return lines.Length >= 3 && int.TryParse(lines[lines.Length - 3], out int id) ? id : 0;
}