新しいファイルを作成するために削減したい多くの数値を含むファイルがあります。まず、 を使用してすべてのテキストを抽出し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);
ご覧のとおり、上記の方法はリアルタイムで文字列を置き換えないため冗長です。頭がいっぱいなのかもしれませんが、どうしたらいいのか迷っています。何か案は?
ありがとう。