Я реализую функцию, выполняемую ниже двух задач. У пользователя есть возможность запустить оба или запустить только одну задачу (обрабатывать через флажки). < /P>
Задача 1: Замените несколько пространств в одно пространство на параграфе слова < /li>
Запуск 2: Начало обрезки и конечное пространство параграфа < /li>
< /ul>
Основным, что следует, это следует будет, что является набором. Изменения отслеживания.
ниже приведен код, который я реализован.public void CleanUp()
{
try {
isTrackingRevisions = wordDocument.TrackRevisions;
currentUserName = wordDocument.Application.UserName;
// Sets "Always use these values regardless of sign in to Office" feature found in File->Options->General to overide the username
this.tools.WordApp.Options.UseLocalUserInfo = true;
string userName = "MyAddIn";
if (userName.Length > 25) {
userName = userName.Substring(0, 25);
}
wordDocument.Application.UserName = userName;
wordDocument.TrackRevisions = true;
Word.Paragraph paragraph, nextParagraph;
paragraph = wordDocument.Paragraphs.Last;
while (paragraph != null) {
nextParagraph = paragraph.Previous();
if (cleanUpProperties.IsCheckedRemoveStartEndParaSpaces) {
//Remove leading space : Cannot use ReplaceSpecificText(paragraph, "^13[ ]{1,}", "^p", true); as paragraph's range doesn't contain earlier paragraphs end para mark.
RemoveLeadingSpaces(paragraph);
//Remove trailing space
ReplaceSpecificText(paragraph, "[ ]{1,}^13", "^p", true);
}
//Remove multiple spaces
if (cleanUpProperties.IsCheckedRemoveMultipleSpaces) {
ReplaceSpecificText(paragraph, "([!^32^160])([^32^160]{2,})([!^32^160])", "\\1 \\3", true);
}
}
} catch (Exception ex) {
//Handle exception
} finally {
wordDocument.TrackRevisions = isTrackingRevisions;
wordDocument.Application.UserName = this.currentUserName;
progressForm.SetStatus("Clean-up completed!!!");
}
}
private bool ReplaceSpecificText(Word.Paragraph paragraph, string searchText, string replaceText, bool matchWildCards = false)
{
try {
Word.Range range = paragraph.Range.Duplicate;
bool isFoundSearchInstance = false;
Word.Find findObject = range.Find;
findObject.ClearFormatting();
findObject.Format = false;
findObject.Text = searchText;
findObject.Replacement.ClearFormatting();
findObject.MatchWildcards = matchWildCards;
findObject.Replacement.Text = replaceText;
findObject.Wrap = WdFindWrap.wdFindStop;
// Replace all occurrences
isFoundSearchInstance = findObject.Execute(Replace: Word.WdReplace.wdReplaceAll);
return isFoundSearchInstance;
} catch (Exception e) {
return false;
}
}
< /code>
Я ранее использовал ниже способов замены нескольких пробелов на одно пространство. Оба работают, но второе решение полностью испортилось с изменениями трека. < /P>
ReplaceSpecificText(paragraph, " {2,}", " ", true);
ReplaceSpecificText(paragraph, "^w", " ");
< /code>
По мере того, как изменения трека включены, когда я запускаю как задачи 1, так и задача 2, удаление нескольких пространств оказывает влияние на начальные и конечные пространства и дает проблемы.
, поэтому я сейчас ищу функцию, чтобы заменить только несколько пространств в середине предложения. Это подстановочный знак, который я нашел. < /P>
ReplaceSpecificText(paragraph, "([!^32^160])([^32^160]{2,})([!^32^160])", "\\1 \\3", true);
< /code>
Я попробовал его в окне «Найти замену Word», и оно работало, как и ожидалось. Но это не работает при программном запуске.
Вот как он работает при запуске с моим кодом. < /P>
Ввод: это параграф с несколькими пространствами. конец?
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/797 ... -track-cha
Замените несколько мест на одно пространство, используя Word Find заменить с помощью трека ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Замените несколько мест на одно пространство, используя Word Find заменить с помощью трека
Anonymous » » в форуме C# - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получите наиболее оптимальную комбинацию мест из списка мест с помощью алгоритма графа.
Anonymous » » в форуме Python - 0 Ответы
- 40 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получите наиболее оптимальную комбинацию мест из списка мест с помощью алгоритма графа.
Anonymous » » в форуме Python - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-