2015-10-13 83 views
0

这是我的文本文件:如何从特定行中的文本文件中读取数字?

Earnings: 17 

EarningsM: 2 

Level: 6 

如何设置这个数字为整数?

我试图

foreach (string line in File.ReadLines(@"C:\Program Files (x86)\makeeuro\work.txt")) 
    if (line.Contains("Earnings")) 
     button1.Text = line; 

,但我只需要数字,所以现在它的正常工作。这是我的整数:

int xp; 
int lvlg; 
int lvl; 

我需要把“收入”值XP,“EarningsM”为lvlg和“级别”的拉特。

+1

是否总是以这种格式表示值? –

+0

如果你有嵌套的循环和条件,我建议你使用大括号。 'foreach(...){if(statement)...}' – Kai

回答

1

试试这个:

IEnumerable<string> lines = File.ReadLines(@"C:\Program Files (x86)\makeeuro\work.txt"); 
Dictionary<string, int> values = lines 
    .Where(l => !string.IsNullOrEmpty(l)) 
    .Select(s => s.Split(':')) 
    .ToDictionary(split => split[0], split => int.Parse(split[1])); 

然后你就可以通过名字像这样来访问你的整数值:

int xp = values["Earnings"]; 

等等。

当然,这是非常粗糙,没有错误检查,我将离开你作为练习;-)

解释有关LINQ运算符的位:

Where操作员搭乘摆脱空行。

Select运算符分割每行:,并将其投影到包含两个字符串(键和值)的数组中。

ToDictionary操作员通过选择分隔的第一个项目作为关键字,第二个作为值创建词典。

干杯

+0

您还需要在'split [1]'中添加'.Trim()'以删除空格。 – Enigmativity

+0

@Enigmativity其实,int.Parse()“吃”的空间。根据MSDN,格式为“[ws] [sign] digits [ws]”。 –

+0

@Luc Morin,非常感谢你:))) – ArN01d

相关问题