我有一个包含很多数字的文件,我想减少这些数字以构建一个新文件。首先,我使用 提取所有文本File.ReadAllText
,然后从包含以逗号或空格分隔的数字的每一行中拆分并提取数字。扫描后,我用新的减少数字替换每个找到的数字的所有出现,但问题是这种方法容易出错,因为某些数字被替换多次
这是我正在使用的代码:
List<float> oPaths = new List<float>();
List<float> nPaths = new List<float>();
var far = File.ReadAllText("paths.js");
foreach(var s in far.Split('\n'))
{
//if it starts with this that means there are some numbers
if (s.StartsWith("\t\tpath:"))
{
var paths = s.Substring(10).Split(new[]{',', ' '});
foreach(var n in paths)
{
float di;
if(float.TryParse(n, out di))
{
if(oPaths.Contains(di)) break;
oPaths.Add(di);
nPaths.Add(di * 3/4);
}
}
}
}
//second iteration to replace old numbers with new ones
var ns = far;
for (int i = 0; i < oPaths.Count; i++)
{
var od = oPaths[i].ToString();
var nd = nPaths[i].ToString();
ns = ns.Replace(od, nd);
}
File.WriteAllText("npaths.js", ns);
如您所见,上述方法是多余的,因为它不会实时替换字符串。也许我的脑袋已经满了,但我只是不知道该怎么做。有任何想法吗?
谢谢。