问题描述
|
伙计们,对不起这个基本问题。我试图找出答案,但我仍然坚持下去。我是编程新手,所以,如果你们能帮助我,那将意味着很多。谢谢。
对于此代码,我从该站点的某人获得了帮助。
这是我的问题,我有这样的.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。但是我不知道如何,我进行了一些尝试但是失败了。
例如:
首先,我将包含6组数字的行的第一行放入datagrid中并进行计算。接下来,第二行。等等。如何获得所需的数字并将其放入数学方程式。
不管怎么说,还是要谢谢你。
解决方法
再以flq的示例为例,我不会依靠数据,而是会执行类似的操作,因此,如果解析失败,您将得到0-除非您想捕获异常并以不同的方式处理它。
int outValue;
list.Add(new Row()
{
Column1 = int.TryParse(strCols[0].Substring(2),out outValue) ? outValue : 0;,...
,如果您使用数据进行绑定,则将转换后的值存储到行中应该没有问题:
list.Add(new Row()
{
Column1 = int.Parse(strCols[0]),...
无论放在顶部的UI内容是什么,它都会在上面调用ToSTring()并将其显示为字符串。因此,您的行对象有6个整数。
值得注意的是,在C#中,您可以用单引号表示一个char,然后拆分为:str.Split(\' \')
为了更加美观,可以通过将文件的单行传递到构造函数中并在构造函数中执行拆分来在Row对象中进行行解释。然后,您可以将行中的设置员设为私有。然后,foreach循环变为:
dg.ItemsSource = File.ReadLines(filename).Select(line => new Row(line)).ToList();
,您需要使用Int32.TryParse将字符串转换为int32s。