gpt4 book ai didi

c# - 如何从文件中提取特定数据?

转载 作者:太空狗 更新时间:2023-10-30 00:33:47 25 4
gpt4 key购买 nike

我有一个包含温度数据的文件。我需要从中提取温度并将仅包含温度的结果保存在新文件中。

这是文件的内容:

BCAST:000D6F00017620E9, 02=34.23
BCAST:000D6F00017620E9, 02=12.3
BCAST:000D6F00017620E9, 02=54.01
BCAST:000D6F00017620E9, 02=12.34
BCAST:000D6F00017620E9, 02=16.22

需要在每个 = 即 34.23、12.3、54.01 等之后提取数据

我试过使用子字符串,但当我将文件作为字符串读取时可以使用它,它只是第一行的子字符串,其余部分保持不变。以下是我的代码。请提出建议!

string temp2 = System.IO.File.ReadAllText(@"C:********\temperature.txt");
int c = temp2.IndexOf("=");
string temp3 = temp2.Substring(c + 1);
System.IO.File.WriteAllText(@"C:\*******\temperature2.txt",temp3);

这段代码的输出是:

34.23
BCAST:000D6F00017620E9, 02=12
BCAST:000D6F00017620E9, 02=54
BCAST:000D6F00017620E9, 02=12
BCAST:000D6F00017620E9, 02=16

最佳答案

ReadAllText 将整个文件作为一个字符串返回。在行数组上循环并在每一行上使用子字符串代码会更有意义。

编辑 ReadAllLines 是一个静态调用:

string[] lines = System.IO.File.ReadAllLines(fileName);

或者,使用流一次读取一行:

var sr = new StreamReader(fileStream);
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
// .. per line sub string
}

EDIT 2 我制定了一个完整的解决方案(注意我更喜欢流式读取而不是读取所有样式 - 它对于非常大的文件更有效 - 所以习惯于)

var sb = new StringBuilder();

using (var file = new FileStream("C:/tmp/temps.txt", FileMode.Open, FileAccess.Read))
{
var sr = new StreamReader(file);

while (!sr.EndOfStream)
{
var nextLine = sr.ReadLine();
int indexOfEqualSign = nextLine.IndexOf("=");

if (indexOfEqualSign == -1 || indexOfEqualSign == nextLine.Length)
continue;

string rightHandSide = nextLine.Substring(indexOfEqualSign + 1);
sb.AppendLine(rightHandSide);
}
}

File.WriteAllText("C:/tmp/temps2.txt", sb.ToString());

关于c# - 如何从文件中提取特定数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com