对文件中的所有行应用计算
本文关键字:应用 计算 文件 | 更新日期: 2023-09-27 18:02:40
我被困在一个问题上,我不能对我的文本文件的所有行执行我的计算。计算只适用于第一行。我想看看我在richTextBox2
中的结果。
using (StreamReader sr1 = new StreamReader(fileName))
{
while ((line = sr1.ReadLine()) != null)
{
commands = line.Split(' ');
if ((commands.Length > 1) && (commands[1].Contains('X')))
{
double X = Convert.ToDouble(commands[1].Substring(1, commands[1].Length - 1).Replace(".", ""));
double Y = Convert.ToDouble(commands[2].Substring(1, commands[2].Length - 1).Replace(".", ""));
Un = ((X * 100) / 1.57) / 1000;
Deux = ((Y * 100) / 1.57) / 1000;
richTextBox2.Text = "VM " + "M1=" + Un.ToString(".0") + " M2=" + Deux.ToString(".0");
}
}
}
您在每次迭代中分配给您的richTextBox
新文本而不是附加它。试试这个。
richTextBox2.Text += "VM " + "M1=" + Un.ToString(".0") + " M2=" + Deux.ToString(".0");
最好先读取文件,再分配给rictTextBox
。这样的。
string fileData = "";
using (StreamReader sr = new StreamReader(fileName))
{
fileData = sr.ReadToEnd();
}
StringBuilder sb = new StringBuilder();
if (!String.IsNullOrEmptry(fileData))
{
string[] splitedData = fileData.Split(new string[] { "'r'n" }, StringSplitOptions.RemoveEmptyEntries); // Suppose file has delimited by newline
foreach (string line in splitedData)
{
commands = line.Split(' ');
if ((commands.Length > 1) && (commands[1].Contains('X')))
{
double X = Convert.ToDouble(commands[1].Substring(1, commands[1].Length - 1).Replace(".", ""));
double Y = Convert.ToDouble(commands[2].Substring(1, commands[2].Length - 1).Replace(".", ""));
Un = ((X * 100) / 1.57) / 1000;
Deux = ((Y * 100) / 1.57) / 1000;
sb.AppendLine("VM " + "M1=" + Un.ToString(".0") + " M2=" + Deux.ToString(".0"));
}
}
richTextBox2.Text = sb.ToString();
}
您可能想使用StringBuilder
来构建您的Text
。正如其他人指出的那样,您正在覆盖每行RichTextBox's Text
属性的值。您可能想要这样做。
var sb = new StringBuilder();
using (StreamReader sr1 = new StreamReader(fileName))
{
while ((line = sr1.ReadLine()) != null)
{
commands = line.Split(' ');
if ((commands.Length > 1) && (commands[1].Contains('X')))
{
double X = Convert.ToDouble(commands[1].Substring(1, commands[1].Length - 1).Replace(".", ""));
double Y = Convert.ToDouble(commands[2].Substring(1, commands[2].Length - 1).Replace(".", ""));
Un = ((X * 100) / 1.57) / 1000;
Deux = ((Y * 100) / 1.57) / 1000;
sb.AppendLine("VM " + "M1=" + Un.ToString(".0") + " M2=" + Deux.ToString(".0"));
}
}
}
richTextBox2.Text = sb.ToString();
如果你的意思是"将计算应用于所有行",记录richBox中每行的计算结果,那么你需要连接新字符串,而不是分配一个新的字符串。
using (StreamReader sr1 = new StreamReader(fileName))
{
while ((line = sr1.ReadLine()) != null)
{
commands = line.Split(' ');
if ((commands.Length > 1) && (commands[1].Contains('X')))
{
double X = Convert.ToDouble(commands[1].Substring(1, commands[1].Length - 1).Replace(".", ""));
double Y = Convert.ToDouble(commands[2].Substring(1, commands[2].Length - 1).Replace(".", ""));
Un = ((X * 100) / 1.57) / 1000;
Deux = ((Y * 100) / 1.57) / 1000;
richTextBox2.Text += String.Format("VM M1={0} M2={1}", Un.ToString(".0"), Deux.ToString(".0"));
}
}
}
同样,您应该使用String。在这种情况下,它使它更易于阅读。