我很熟悉c#以及任何类型的编程,所以任何帮助都将受到赞赏。
我有两个txt文件,我希望合并为一个 格式如下:
text1.txt
apple=1
grape=2
strawberry=3
etc....
text2.txt
1=156
2=26
3=180
etc...
我希望实现的格式是
Final.txt
apple=156
grape=26
strawberry=180
我不太确定如何解决这个问题,我正在考虑用'='分割每一行并使用if语句,但这似乎不起作用,我无法让它工作。
理想情况下,如果可以使用相同的按钮无效,那将是非常好的。 有人可以指出我正确的方向
欢呼声
答案 0 :(得分:1)
使用IO.File.ReadAllLines将文件1读入字典,按=
拆分,左边的所有内容都是键,右边的所有内容都是值。
使用相同的方法将文件2读入字典。
遍历第一个字典中的所有条目,并为其他字典中的每个值TryGetValue循环。如果找到,请在输出文件中输出一行,取key1
和value2
(第一个字典的键和第二个字典的值) - 通过等号。
答案 1 :(得分:1)
将两个文件解析为词典:
对于每个文件,使用File.ReadAllLines
获取字符串数组。
然后使用foreach
循环遍历数组中的每个字符串。如您所建议的那样,在每个字符串上使用String.Split来获取键和值(" apple"以及" 1",例如)。将键和值添加到字典中(每个文件一个字典)。
然后foreach
通过text1&#39的字典,并使用该值作为text2的字典的键。这可以让你映射" apple" - > 1 - > 156。
在循环浏览字典时,将每一行写入final.txt。
例如试试这个:
static void Main(string[] args)
{
String path1 = @"C:\file1.txt";
String path2 = @"C:\file2.txt";
String newFilePath = @"C:\final.txt";
// Open the file1 to read from.
string[] readText = File.ReadAllLines(path1);
// Add file1 contents to dictionary (key is second value)
Dictionary<string, string> dictionaryA = new Dictionary<string, string>();
foreach (string s in readText)
{
string[] parts = s.Split('=');
dictionaryA.Add(parts[1], parts[0]);
}
// Open the file2 to read from.
readText = File.ReadAllLines(path2);
// Add file2 contents to dictionaryB (key is first value)
Dictionary<string, string> dictionaryB = new Dictionary<string, string>();
foreach (string s in readText)
{
string[] parts = s.Split('=');
dictionaryB.Add(parts[0], parts[1]);
}
// Create output file
System.IO.StreamWriter file = new System.IO.StreamWriter(newFilePath);
// write each value to final.txt file
foreach (var key in dictionaryA.Keys)
{
if (dictionaryB.ContainsKey(key))
{
file.WriteLine(dictionaryA[key] + "=" + dictionaryB[key]);
}
}
file.Close();
}
答案 2 :(得分:0)
如果要将text1.txt
用作键列表,并将text2.txt
用作值列表,则只需将第一个文件逐行读入字典,例如{{1并将第二个文件读入另一个字典dictKeys
。然后,您可以遍历dictValues
并将dictKey
中的值拉入新词典。
此时,只需遍历新词典并将其写入文件即可。
dictValues