在字符串C#中提取2个int值?

时间:2014-01-24 19:09:22

标签: c# windows string visual-studio int

我有这段代码:

int[,] matSong;
int nNote = 0;

OpenFileDialog Of = new OpenFileDialog();
Of.ShowDialog();

StreamReader fp = new StreamReader(Of.FileName);
nNote = Convert.ToInt32(fp.ReadLine());

matSong = new int[2, nNote];

int i = 0;
string buffer = fp.ReadLine();

while (buffer != null)
{
    int.TryParse(buffer, out matSong[0, i]);
    int.TryParse(buffer, out matSong[1, i]);
    MessageBox.Show(buffer);
    buffer = fp.ReadLine();
    i++;
}

我从文件中读取的字符串类似于“123 400”或“1234 500”或“1234 1000”。

解决方案int.Tryparse()不起作用。

如何将2个数字保存到矩阵中?

file.txt是这样的:

4
123 400
234 500
354 700
233 500

如果您有其他解决方案将数字放入我的矩阵中,我将非常感激。

我为我的英语道歉,我希望你能解决我的问题。

谢谢你的帮助很大。

Matteo Angella

2 个答案:

答案 0 :(得分:2)

不是逐行阅读文件,而应逐字逐句阅读:

string text = System.IO.File.ReadAllText(Of.FileName);
string[] words = text.Split(' ');

您可以尝试

string[] words = fp.ReadToEnd().Split(' '); 

但正如评论中所提到的,它不会正确解释换行符。

答案 1 :(得分:0)

您可以拆分字符串:

while (buffer != null)
{
    var words = buffer.Split(new[]{' '}, StringSplitOptions.RemoveEmptyEntries);
    int.TryParse(words[0], out matSong[0, i]);
    int.TryParse(words[1], out matSong[1, i]);
    buffer = fp.ReadLine();
    i++;
}