使用StringBuilder
建立字符串中的循環,就像這樣:
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
theStringBuilder.AppendLine("Extra value \n"+kvp.Key+" \nfound in file " + InWhich);
if (Math.Abs(kvp.Value) != 1)
theStringBuilder.AppendLine(Math.Abs(kvp.Value)+ "times");
}
}
}
現在可以顯示所有的內容在StringBuilder
,就像這樣:
// Display all results in message box
MessageBox.Show(theStringBuilder.ToString());
更新:
要存儲每個文件的更改,請使用List<string>
,像這樣:
var firstFileChanges = new List<string>();
var secondFileChanges = new List<string>();
System.Text.StringBuilder theStringBuilder = new System.Text.StringBuilder();
foreach (KeyValuePair<string, int> kvp in Comparer)
{
if (kvp.Value != 0)
{
mismatches++;
string InWhich = kvp.Value > 0 ? firstFile : secondFile;
if(InWhich == firstFile)
{
firstFileChanges.Add(kvp.Key);
}
else
{
secondFileChanges.Add(kvp.Key);
}
}
}
if(firstFileChanges.Count > 0)
{
theStringBuilder.Append("First file changes: ");
int counter1 = 0;
foreach(string change1 in firstFileChanges)
{
if(counter1 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change1);
counter1 += 1;
}
theStringBuilder.AppendLine();
}
if(secondFileChanges.Count > 0)
{
theStringBuilder.Append("Second file changes: ");
int counter2 = 0;
foreach(string change2 in secondFileChanges)
{
if(counter2 > 0)
{
theStringBuilder.Append(", ");
}
theStringBuilder.Append(change2);
counter2 += 1;
}
}
MessageBox.Show(theStringBuilder.ToString());
,如果我想一個變化添加到特定文件我可以爲它創建一個stringbuilder嗎?所以我沒有得到「文件A加2,文件A加狗...」,並有文件A加:2,狗。 ? – Masriyah
@Masriyah - 當然,你可以有多個'StringBuilder',但我不確定你的意思是「更改某個文件」? –
這裏我有兩個文件,所以對第一個文件或第二個文件進行更改。因此,如果第一個文件所做的更改將會聲明第一個文件,並列出在該文件中所做的所有更改。而不是命名該文件,那麼更改和相同的文件名將顯示多次 – Masriyah