J'ai 2 présentations PowerPoint un original et un édité et dans chacun d'eux j'ai un TextBox
. L'idée est de trouver n'importe quel texte qui ne correspond pas. Quand je trouve le texte qui ne correspond pas dans les 2 TextBox
es je trouve la position du mot édité dans le TextBox
dans la présentation édité et ajouter ce mot à la zone de texte de présentation originaleTrouver les différences dans 2 Textboxes Interop C#
par exemple, dans ma présentation originale a un TextBox
qui contient "This is New" et dans ma présentation éditée j'ai "Thisssss is Blaaa". Quand je cours mon code, je reçois ce qui suit: "This Thisssss New New Blaaa". Cela fonctionne bien cependant quand j'ai un TextBox
dans mon PowerPoint original avec la chaîne "This This" et un TextBox
édité disant "Thissss Blaa" je devrais obtenir "This Thissss cette Blaa" cependant j'obtiens "This Thissss Blaa" à la place. Il ne reçoit pas la deuxième "Ceci" de l'original TextBox
pour une raison quelconque. Des idées comment je pourrais résoudre ce problème?
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);
}
Je pense que si vous avez 2 mêmes mots, le 'if (secondStringList.IndexOf (word) == -1) {...}' n'est pas exécuté. – Madenis
@Madenis oui je pense que c'est le cas. Des idées de comment je pourrais résoudre cela? –