我有两个PowerPoint演示文稿,一个原创,一个编辑,每个我有一个TextBox
。
这样做的想法是找到任何不匹配的文本。当我在2 TextBox
es中找到不匹配的文字时,我会在编辑过的演示文稿中的TextBox
中找到编辑过的字词的位置,并将该字词添加到原始演示文稿的文本框中
例如在我原来的演示文稿中有一个TextBox
,其中包含“This is New”,在我编辑的演示文稿中,我有“Thisssss is Blaaa”。当我运行我的代码时,我得到以下“Thisssssss is New Blaaa”。这一切都很好,但是当我在我的原始PowerPoint中有TextBox
字符串“This This”和编辑TextBox
说“Thissss Blaa”时,我应该得到“This Thissss This Blaa”但是我得到了“这是Thissss Blaa”而不是。由于某种原因,它不会从原始TextBox
获得第二个“This”。我有什么想法可以解决这个问题?
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);
}
答案 0 :(得分:1)
而不是获得当前的'通过firstStringList
在IndexOf
内的索引,您可以在foreach循环之外声明indexOfWord
并自行计数,以便变量保存当前索引。
否则firstStringList.IndexOf()
将返回当前字符串的第一个出现。
此外,您可以将该索引作为第二个参数传递给secondStringList.IndexOf()
,以确保您不会获取已插入字符串的索引。
int indexOfWord=0;
foreach (var word in firstStringList)
{
if (secondStringList.IndexOf(word,indexOfWord) == -1)
{
// 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);
}
indexOfWord++;
}
不确定这是否适用于所有情况但是使用给定的示例它对我来说很好。