例如,我有输入文本文件" FILE1.txt" 读取
000123400056780001324
000556700034520004758
这里,前7个数字=项目1,下一个=项目2,依此类推。
另一个输入地图文本文件" MAPFILE.txt" 读取
0003452 itema
0001324 itemb
0005567 itemc
0004758 itemd
我们可以说,第1列是项目编号(7个字符),第2列是描述(5个字符)。
我添加的项目中预先存在的文本文件,以便我可以将输出写入其中。我们称之为" OUTPUT.txt" -
S.No Item1 Desc1 Item2 Desc2 Item3 Desc3
所以最终,我需要得到
S.No Item1 Desc1 Item2 Desc2 Item3 Desc3
1 0001234 * 0005678 * 0001324 itemb
2 0005567 itemc 0003452 itema 0004758 itemd
我有大约100行像这样。 如何逐行拆分FILE1,然后将这些项目编号子串映射到MAPFILE中的子串,最后将它们合并到我已添加到项目中的OUTPUT.txt中?我&#39 ;初学者和我刚刚开始。我已经通过这种方式将我的解决方案分解为步骤,但我该怎么做呢?
非常感谢!
答案 0 :(得分:1)
Linq版本也是可能的
var mapping = File.ReadAllLines("MAPFILE.txt")
.Select(line => line.Split())
.Where(parts => parts.Length>1) //Skip empty lines
.ToDictionary(parts => parts[0], parts => parts[1]);
var lines = File.ReadAllLines("FILE1.txt")
.Where(line => !String.IsNullOrWhiteSpace(line)) //Skip empty lines
.Select(line => string.Concat(
Regex.Matches(line, ".{7}")
.Cast<Match>()
.Select(m => m.Value)
.Select(s => s.PadLeft(10) + (mapping.ContainsKey(s) ? mapping[s] : "*").PadLeft(10))
)
);
string finalResult = String.Join(Environment.NewLine, lines);
<强>输出:强>
0001234 * 0005678 * 0001324 itemb
0005567 itemc 0003452 itema 0004758 itemd