|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Замена 2х-3х подряд идущих слов одним |
|
.NET - Замена 2х-3х подряд идущих слов одним
|
Новый участник Сообщения: 15 |
Профиль | Отправить PM | Цитировать Всем Доброго времени суток! У меня есть программа, суть ее такова: берется вордовский документ, в нем выделяются слова желтым цветом, а потом при нажатии на кнопку заменяются тегами. Проблема в том, что если выделено несколько слов подряд, то заменяется каждое отдельно, а мне нужно чтобы одним заменялось. Как выполнить проверку на непрерывность выделения не могу найти... может кто подскажет?
Заранее спасибо! |
|
Отправлено: 10:13, 28-05-2012 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать дурацкий ворд, обкуренные, обколотые создатели этой дурацкой автоматизации и психоделики! И т.д. и т.п.
Marsella_88, private void button2_Click(object sender, EventArgs e) { // активный word-документ Word.Document thisDocument = thisApplication.ActiveDocument; // заменяем на Тег string find = "{Тег_"; string finish = "конец"; string slovo_1 = ""; // счетчик int s = 0; int i = 0; // цикл поиска выделений в word-документе //foreach (Word.Range Range_1 in thisDocument.Words) Word.Range Range_1=thisDocument.Words[1]; //Range_1.Text = " "; while (Range_1.Text!=finish) { i=i+1; Range_1 = thisDocument.Words[i]; // проверка этого выделения на цвет if (Range_1.HighlightColorIndex == Word.WdColorIndex.wdYellow) { while (Range_1.HighlightColorIndex == Word.WdColorIndex.wdYellow) { // сюда записываем выделенное слово slovo_1 = slovo_1+Range_1.Text; Range_1.Text = "";// это приведет к тому, что выделенное слово станет пустым, это нарушит форматирование документа, но никуда от жтого не деться. //i = i + 1; Range_1 = thisDocument.Words[i]; }; s = s + 1; //Range_1. далее по тексту Дело в том, что Word, кроме всего прочего относит к слову и следующий за ним пробел, чем делает жизнь интересней (не знаю, то ли радоваться, то ли нет). Это ведет к некоторым подводным камням, как то: поиск нескольких выделенных слов подряд while (Range_1.HighlightColorIndex == Word.WdColorIndex.wdYellow) { // сюда записываем выделенное слово slovo_1 = slovo_1+Range_1.Text; Range_1.Text = "";// это приведет к тому, что выделенное слово станет пустым, это нарушит форматирование документа, но никуда от жтого не деться. //i = i + 1; Range_1 = thisDocument.Words[i]; }; Пример: Текст - просто черный текст Желтый - некоторой текст с желтым выделением [i] - индекс слова в массиве thisDocument.Words исходник: 1) текст[1] желтый[2] желтый[3] нашли "желтый", начали выполнять цикл поиска следующих желтых слов 2) slovo_1 = желтый Range_1.Text="" -> Range_1.Text = null -> текст[1] желтый[null] желтый[3] -> текст[1] желтый[null] желтый[2] ! Текст в Word примет вид текст[1] желтый[2] Вот такая хитрая вещь, поэтому i=i+1 я закомментировал. Хочется отметить, что если желтое слово стоит в конце строки, то он съестся вместе с переносом строки. Поэтому надо все желтые слова обрамлять либо пробелами, либо как то оставлять переносы строк. Это первое. Второе - я ввел в условное слово, по которому прекращается обработка цикла while - это слово "конец". Его необходимо будет закрасить белым, и шрифту также назначить белый цвет. Т.е. вроде как есть, а вроде как и не видно. Либо заменить другим кодовым словом. Большой вопрос с конечному оформлению документа. Оно(оформление) поплывет. надеюсь поможет |
------- Отправлено: 04:08, 01-06-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать тьфу, не заметила второй страницы
Огромное спасибо за помощь, вечером разберу что к чему |
Последний раз редактировалось Marsella_88, 01-06-2012 в 12:43. Отправлено: 09:08, 01-06-2012 | #12 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2010 - [решено] Показ нескольких презентаций подряд | AIA | Microsoft Office (Word, Excel, Outlook и т.д.) | 10 | 04-07-2011 11:26 | |
HDD - [решено] Умерли подряд два жестких диска. | Blackmore | Накопители (SSD, HDD, USB Flash) | 4 | 21-09-2010 01:49 | |
[решено] Не работает 2 раза подряд ClipGet | sashadeg | AutoIt | 4 | 05-03-2010 12:27 | |
Разное - замена двух жестких дисков одним | vitslob | Microsoft Windows 2000/XP | 2 | 12-06-2008 12:51 | |
[решено] Комп убил две флешки подряд. | Elkmann | Непонятные проблемы с Железом | 17 | 19-04-2008 12:00 |
|