伙计们,对不起基本问题。我试图找出,但我仍然坚持下去。我是编程的新手,如果你们能帮助我,那就意味着很多。谢谢。 对于此代码,我得到了本网站某人的帮助。
这是我的问题,我有像这样的.txt数据
10192 20351 30473 40499 50449 60234 10192 20207 30206 40203 50205 60226 10192 20252 30312 40376 50334 60252
这是我的代码,我打开文本文件并解析成数字并将其放到6列datagrid。
所以我的数据在datagrid中就像这样:
第1栏|第2栏|第3栏|第4栏|第5栏|第6栏
10192 | 20351 | 30473 | 40499 | 50449 | 60234
private void Parsing_String(string filename)
{
List<Row> list = new List<Row>();
foreach (String str in File.ReadLines(filename))
{
String[] strCols = str.Split(Convert.ToChar(" "));
list.Add(new Row()
{
Column1 = strCols[0].Substring(2),
Column2 = strCols[1].Substring(2),
Column3 = strCols[2].Substring(2),
Column4 = strCols[3].Substring(2),
Column5 = strCols[4].Substring(2),
Column6 = strCols[5].Substring(2),
});
}
dg.ItemsSource = list;
}
public class Row
{
public string Column1 { get; set; }
public string Column2 { get; set; }
public string Column3 { get; set; }
public string Column4 { get; set; }
public string Column5 { get; set; }
public string Column6 { get; set; }
}
我想要做的是,我需要逐行排列数字以输入一些数学方程式。我需要将字符串转换为int。但我不知道如何,我做了一些试验但失败了。
例如: 首先,我在datagrid中放入第一行,其中包含6组数字并计算它。接下来,第二行。等等。如何获得我想要的数字并将其放入数学方程式中。
非常感谢。
答案 0 :(得分:1)
如果您使用数据进行绑定,则将转换后的值存储到行中应该没有问题:
list.Add(new Row()
{
Column1 = int.Parse(strCols[0]),
...
无论你放在什么UI的东西,无论如何它都会调用ToSTring()并将其显示为字符串。因此,您的行对象有6个整数。
简单来说,在C#中你可以用单引号表示一个字符,然后分割成:str.Split(' ')
为了更加优雅,您可以通过将文件的一行传递到构造函数并在构造函数中执行拆分,在Row对象中包含行解释。然后你可以将行上的setter设为私有。然后foreach循环变为:
dg.ItemsSource = File.ReadLines(filename).Select(line => new Row(line)).ToList();
答案 1 :(得分:0)
您需要使用Int32.TryParse将字符串转换为int32s。
答案 2 :(得分:0)
要把flq的例子放得更远,我不会指望数据,并且会做这样的事情,所以如果解析失败你得到0 - 除非你想捕获异常并处理它有所不同。
int outValue;
list.Add(new Row()
{
Column1 = int.TryParse(strCols[0].Substring(2), out outValue) ? outValue : 0;,
...