【问题标题】:c# problem with saving to txt and new line in data.txtc#在data.txt中保存到txt和换行的问题
【发布时间】:2018-11-21 15:56:36
【问题描述】:

我有问题。我必须将数字保存到 txt (这意味着什么并不重要)。我想在数字之间留出空格。 当我尝试在没有空格的情况下保存它时效果很好 这是我没有空格的代码

if (x_dolny > x1_sqr && x_dolny < x2_sqr)
{ 
   using (StreamWriter streamW = new StreamWriter("C:\\Users\\Desktop\\outputdata.txt", true))
   {
      streamW.Write("1");
   }
}
else if (y_prawy < y1_sqr && y_prawy > y2_sqr)
{
   using (StreamWriter streamW = new StreamWriter("C:\\Users\\Desktop\\outputdata.txt", true))
   {
      streamW.Write("1");
   }
}
else if (delta >= 0.0)
{
   using (StreamWriter streamW = new StreamWriter("C:\\Users\\Desktop\\outputdata.txt", true))
   {
      streamW.Write("2");
   }
}
else
{
    using (StreamWriter streamW = new StreamWriter("C:\\Users\\Desktop\\outputdata.txt", true))
      {
         streamW.Write("0");
      }
}
using (StreamWriter streamW = new StreamWriter("C:\\Users\\Desktop\\outputdata.txt", true))
{
   streamW.WriteLine("New line");
}

这是屏幕截图 outputdata.txt

然后我尝试添加“\t” 所以现在我有

streamW.Write("1 \t");
streamW.Write("2 \t");
streamW.Write("0 \t");

但文件看起来像这样

我不明白为什么它会切断我的线路并移至下一行...... 有什么想法吗?

【问题讨论】:

  • 记事本菜单 - 格式 - 自动换行.. 是否勾选?
  • 您还可以通过尝试展开记事本窗口来验证它是否为自动换行。如果是自动换行,则随着窗口变大,文本会四处移动,直到窗口足够长到一行。

标签: c# newline saving-data


【解决方案1】:

正如 @Sinatr 在 cmets 中提到的,这可能只是您的文本编辑器中的自动换行问题。

尽管题外话,这段代码确实可以使用一些重构来使其更简单,更容易阅读和理解。

using (var streamWriter = new StreamWriter(@"C:\Users\Desktop\outputdata.txt", true))
{
    string message = "0";

    if (MessageIs1(x_dolny, x1_sqr, x2_sqr, y_prawy, y1_sqr, y2_sqr))
        message = "1";
    else if (delta >= 0.0)
        message = "2";

    streamWriter.Write(message);
    streamWriter.WriteLine("New line");
}

// ...

private static bool MessageIs1(int x_dolny, int x1_sqr, int x2_sqr, 
                               int y_prawy, int y1_sqr, int y2_sqr)
{
    return (x_dolny > x1_sqr && x_dolny < x2_sqr) 
        || (y_prawy < y1_sqr && y_prawy > y2_sqr);
}

以下是一些建议:

  1. 您在 if 语句的每个分支中甚至在之后重复使用了 StreamWriter。不要多次键入using 语句,而是将其全部包含在一个using 语句中。尝试关注DRY principle(不要重复自己)。

  2. 当数据类型从赋值中很明显时可以使用var(例如创建new对象)。

  3. 尽量使您的标识符(变量名和方法名)尽可能清晰和简洁。其他阅读您的代码的人不必四处寻找您的变量或方法在做什么;从名称上应该很明显。避免使用缩写,因为其他人可能不知道缩写代表什么,或者可能认为它有其他含义。我不知道你的变量是做什么用的,因为我无法查看完整的源代码,但我肯定会从上面的示例中重命名以下内容:x_dolnyx1_sqrx2_sqry_prawy、@ 987654335@、y2_sqrMessageIs1

  4. 将复杂的布尔逻辑提取到一个方法中,以便您或其他人以后需要时更容易阅读和更改。

  5. 使用verbatim string literals 作为文件路径。

  6. 尽量遵守KISS Principle(保持简单,愚蠢)。大多数开发人员过度设计。简单的代码易于阅读、理解、维护和扩展。

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多