【问题标题】:Editing Lines in a Text File Using C#使用 C# 编辑文本文件中的行
【发布时间】:2016-07-13 18:57:40
【问题描述】:

与其他“编辑文本文件”问题相比,我的问题略有不同。例如,我有以下文本文件:

Cal Test
{
     Feature 0.0 1.0 2.0 7.5
     Feature 0.0 -1.0 2.0 -7.5
     .etc
}

假设我在这个文本文件中有大约一百行Feature。本质上,数字代表数据点;所以前两个数字代表数据点:(0.0, 1.0),第二对代表第二个数据点:(2.0, 7.5);它表示另一个程序中的一行,它接收文本文件。

我想做的是将每个数据点逆时针旋转 90 度;这意味着(a, b)(b, -a)。我知道如何做到这一点,逐行阅读并编辑点,我想知道,是否有更有效的方法来交换(a,b)并附加负片?

【问题讨论】:

  • 您想每行旋转整个特征集吗?所以第一个是 (1.0, -0.0, 7.5, -2.0)?
  • 与您建议的读取每一行、解析并以直接和简单的方式进行更改相比,再多的微优化都不会显着提高性能。如果您有 10 亿行,甚至可能有一百万行,则可能需要进行某种优化(这很可能围绕您如何管理文件 IO 和内存)。
  • @keyboardP 是的,没错

标签: c# text text-files editing


【解决方案1】:

如前所述,改进不大,但是

使用 ReadLines() 获取项目列表,就像您可能正在做的那样

var list = new List<string>(); // or whatever structure you use to keep items in memory

foreach(var line in File.ReadLines(anInFileStr))
{
  var lineArray = line.Split(' ') ;
  list.Add(string.format("{0} {2} {1} {3}", lineArray[0], -int.Parse(lineArray[1]), lineArray[2], lineArray[3]));
}

File.WriteAllLines(anOutFile, list)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 2017-07-04
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多