두 개의 PowerPoint 프레젠테이션 중 하나는 원본과 하나는 편집되었고 각각은 TextBox
입니다.두 텍스트 상자의 차이점 찾기 Interop C#
이 아이디어는 일치하지 않는 텍스트를 찾는 것입니다. 내가 편집 된 프레젠테이션의 TextBox
에서 편집 된 단어의 위치를 찾을 수 2 개 TextBox
ES에 일치 원래의 프리젠 테이션의 텍스트 상자에 해당 단어를 추가하지 않는 텍스트를 찾을 때
예는 TextBox
있다 여기에는 "This is New"가 포함되어 있으며 편집 된 프레젠테이션에는 "Thisssss is Blaaa"가 있습니다. 코드를 실행하면 다음과 같은 "This Thisssss is New Blaaa"가 표시됩니다. 그러나이 모든 문자열은 "This This This Blaa"라는 문자열을 사용하여 원래의 PowerPoint에 TextBox
문자열을 가지고 있고 "Thissss Blaa"라고 편집 된 TextBox
이 있지만 "This Thiss Bla"를 얻지 만 대신이 "Thissss Blaa"를 얻습니다. 어떤 이유로 든 원래의 TextBox
에서 두 번째 "This"를 얻지 못합니다. 이 문제를 해결할 수있는 아이디어가 있습니까? 대신 IndexOf
를 통해 firstStringList
내부의 '현재'인덱스를 얻기의
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);
}
두 단어가 같은 경우'if (secondStringList.IndexOf (word) == -1) {...}'이 실행되지 않습니다. – Madenis
@Madenis 예 그렇습니다. 어떻게 해결할 수 있을지에 대한 아이디어가 있습니까? –