我在C#windows窗体应用程序中创建了一个项目。我正在使用.Net framework 4.0和Visual Studio 2010。 项目包含保存并加载文件按钮。还有一些文本框。
我创建了一个像这样的文本文件
Serial Number = 1
Type Number = 500
Test Engineer = jay
Date = 03/05/2018
Time = 16:17:20 PM
Test1 = 1.00
Test2 = 1.76
.
.
.
Test18 = 4.66
加载文件代码按钮:
private void btn_LoadFile_Click(object sender, EventArgs e)
{
OpenFileDialog fdlg = new OpenFileDialog();
if (fdlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
System.IO.StreamReader sr = new
System.IO.StreamReader(fdlg.FileName);
string[] lines = sr.ReadToEnd().Split('\n');
tb_SerialNo.Text = lines[0];
tb_TypeNo.Text = lines[1];
tb_TestEngineer.Text = lines[2];
tb_Date.Text = lines[3];
tb_Test1.Text = lines[4];
tb_Test2.Text = lines[5];
}
}
当我运行上面的代码时,我在Serial中没有文本框的值Serial Number = 1
,但我想在文本框中1
。相同的Type Number
Tex框Type Number = 500
,但我也希望在类型编号文本框中显示500
。
答案 0 :(得分:2)
按新行分割时,lines[0]
将存储Serial Number = 1
。在这里,您需要通过=
再次拆分。
如果您尝试从字符串数组中打印每个元素的值,您将了解在代码中需要进行哪些更改。
private void btn_LoadFile_Click(object sender, EventArgs e)
{
OpenFileDialog fdlg = new OpenFileDialog();
if (fdlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
System.IO.StreamReader sr = new
System.IO.StreamReader(fdlg.FileName);
string[] lines = sr.ReadToEnd().Split('\n'); //To make your code more readable, you can use "Environment.NewLine" instead of '\n'
Console.WriteLine(lines[0]); //Here it will give "Serial Number = 1"
// you need to store 1 in tb_SerialNo.Text, so split lines[0] with =
//Have you tried with this.
string[] splitWithEqualTo = lines[0].Split('=');
tb_SerialNo.Text = splitWithEqualTo [1];
//Similar kind of logic you can apply for other text boxes.
}
}
要解决您的问题,您可以尝试以下操作
Console.WriteLine(lines[0]); // This will print "Serial Number = 1"
string[] slitLine = lines[0].Split('=');
Console.WriteLine(slitLine[0]); //This will print "Serial Number"
Console.WriteLine(slitLine[1]); //This will print 1, this is what you need to store in tb_SerialNo.Text, right?
这不是解决方案,但您将了解在代码中需要进行哪些更改。
答案 1 :(得分:0)
let car = Car()
self.augmentedRealityView.scene.rootNode.addChildNode(car)
car.animateWheels()
试试这个
答案 2 :(得分:0)
您可以使用string.Split()或string.LastIndexOf()从原始字符串中提取所需的部分。
例如:
这里,当找到'='
char时,我们将字符串拆分为两个。额外空间由Trim()
提升,用于从字符串的前导和尾部移除空格。
tb_Test2.Text = lines[5].Split('=').Last().Trim();
或
LastIndexOf()
找到指定的符号,从字符串的结尾开始搜索并返回其位置(如果找到它,否则为-1)。
Substring()
从提供的字符串生成一个新字符串,从一个位置开始并获取指定数量的字符。
这里,从LastIndexOf()
返回的索引开始,并将所有字符包括在字符串的末尾(如果你没有指定它必须占用多少个字符,则需要它们全部。这是一个方法重载)。
tb_Date.Text = lines[3].Substring(lines[3].LastIndexOf("=") + 1).TrimStart();
在这两种情况下,原始字符串保持不变。
您还可以从原始阵列创建一个新阵列,仅包含所需的部分,然后分配新阵列的值:
string[] lines2 = lines.Select(s => s.Split('=').Last().Trim()).ToArray();
tb_SerialNo.Text = lines2[0];
tb_TypeNo.Text = lines2[1];
//(...)