Ich habe 2 PowerPoint-Präsentationen ein Original und ein bearbeitet und in jedem von ihnen habe ich eine TextBox
.Finden Sie die Unterschiede in 2 Textboxen Interop C#
Die Idee davon ist, jeden Text zu finden, der nicht übereinstimmt. Wenn ich Text finden, die nicht in der 2 TextBox
sie paßt ich die Position des editierten Wortes in den TextBox
in der bearbeiteten Präsentation finden und dieses Wort zu der ursprünglichen Präsentation der Textbox hinzufügen
zB in meiner ursprünglichen Präsentation hat ein TextBox
das enthält "This is New" und in meiner bearbeiteten Präsentation habe ich "Thisssss is Blaaa". Wenn ich meinen Code starte, bekomme ich folgendes: "This Thesssss is New Blaaa". Das alles funktioniert gut, aber wenn ich eine TextBox
in meinem ursprünglichen PowerPoint mit der Zeichenfolge "This This" und einem bearbeiteten TextBox
sagen "Thisssss Blaa" habe, sollte ich "This Thesss This Blaa" bekommen, aber ich bekomme stattdessen "This Thesss Blaa". Es erhält nicht das zweite "This" von der ursprünglichen TextBox
aus irgendeinem Grund. Irgendwelche Ideen, wie ich das beheben könnte?
var q = from original in originalList
join editedTmp in editList on original.Id equals editedTmp.Id into g
from edited in g.DefaultIfEmpty()
select new
{
original,
edited
};
foreach (var item in q)
{
var originalString = item.original.TextFrame.TextRange.Text;
var editString = item.edited.TextFrame.TextRange.Text;
var firstStringList = originalString.Split(delimiter).ToList();
var secondStringList = editString.Split(delimiter).ToList();
foreach (var word in firstStringList)
{
if (secondStringList.IndexOf(word) == -1)
{
var indexOfWord = firstStringList.IndexOf(word); //gets the position of the edited word eg. 3.
// using indexOfWord+indexOfWord as I need do this if more than one word is added.
secondStringList.Insert(indexOfWord + indexOfWord, word);
// Insert the word that was not found at position 3 inside secondStringList
one.Add(word);
}
}
// Join the secondStringList to make 1 string separated by the space character
item.edited.TextFrame.TextRange.Text = string.Join(" ", secondStringList);
}
Ich denke, wenn Sie 2 gleiche Wörter haben, wird das 'if (secondStringList.IndexOf (Wort) == -1) {...}' nicht ausgeführt. – Madenis
@Madenis ja ich denke das ist der Fall. Irgendwelche Ideen, wie ich das lösen könnte? –