0

我知道这已被问过几次,但我需要一种快速的方法来处理不同大小的文件(小文件和大文件)。

我需要在 sat(txt) 文件中编辑比例因子。这是第三行的第一个数字:

700 104 1 0 16 Autodesk AutoCAD 19 ASM 221.0.0.1871 NT 24 星期二

2016 年 8 月 16 日 09:02:14

1000 9.9999999999999995e-007 1e-010

4

2 回答 2

1

我建议提取一个方法和Linq:

private static String MyEditLine(string value) {
  var items = value.Split(new char[] { ' ' }, 2);

  items[0] = "2000"; // let's change 1000 into 2000

  return string.Join(" ", items);
}

...

var target = File
  .ReadLines(@"C:\MyFile.txt")
  .Select((line, index) => index != 2
     ? line
     : MyEditLine(line))
  .ToList(); 

File.WriteAllLines(@"C:\MyFile.txt", target);
于 2016-08-16T10:56:04.013 回答
0

假设您阅读了您的文件并获得了String[]呼叫file,并且您要修改的号码表示为float.

您可以使用以下代码首先提取您想要的行。在此之后,您将通过该号码float.TryParse(..)

int lineWithParam = 3;

String[] splittedLine = (file[lineWithParam-1]).Split(new char[] { ' ' }, 2);

if(splittedLine.Length == 2)
{
    float fact = 0.0f;

    String newFact = splittedLine[0];

    // or how ever you want to modify your factor
    if(float.TryParse(splittedLine[0], out fact))   
    {
        newFact = "" + (fact * 12.3f);

    }

    file[lineWithParam-1] = newFact + " " + splittedLine[1];
}

这是一个可执行示例:https ://dotnetfiddle.net/NVgETo

在此之后,您可以将其写String[] file回真实文件。

注意:file如果给定行中的第一个参数无效,这不会修改float!

于 2016-08-16T10:43:58.293 回答