Как заменить текст на пустоту?

  • Автор темы Автор темы hulk1776
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

hulk1776

Топикстартер
15 лет на форуме
Сообщения
738
Реакции
21
Такой вопрос возник.
Можно ли как-то делать замену текста на пустоту.
Я делаю так:
Код:
Set MyInd = CreateObject("InDesign.Application.CS3")
Set MyObj = MyInd.ActiveDocument
 MyInd.FindTextPreferences = idNothingEnum.idNothing
 MyInd.ChangeTextPreferences = idNothingEnum.idNothing
 MyInd.ChangeTextPreferences.AppliedParagraphStyle = "Zag1"
MyInd.FindTextPreferences.FindWhat = "Zag1"
[B]MyInd.ChangeTextPreferences.ChangeTo = " " [COLOR=DarkGreen]'если тут указать 
пустую строку, то Zag1 не исчезает, 
а заменять на лишний пробел не оч. хорошо [/B][/COLOR]
MyObj.ChangeText

Вот можно ли что-то придумать?
Спасибо.

P.S.
Попробовал так
Код:
MyInd.ChangeTextPreferences.ChangeTo = Null
- ругается
и так
Код:
MyInd.ChangeTextPreferences.ChangeTo = idNothingEnum
- не удалилось.
 
Ответ: Как заменить текст на пустоту?

Простите, но долго смеялся.
Воистину, правильно сформулированная задача – половина решения.
Вам надо было не на "пустоту" менять текст, а на текст, не содержащий ни одного символа!

MyInd.ChangeTextPreferences.ChangeTo = ""
 
Ответ: Как заменить текст на пустоту?

Так и не меняется ':]
Т.е. происходит только присвоение стиля. А само заменяемое на "ничего" слово остается. А вот в Пижамкере.. [и так далее ;-)))].
Причем попробовал посмотреть как это бы происходило вручную (через Ctrl-F) и тоже самое. Если в поле "менять на" не написать ничего, то заменяемое слово не удалится.

P.S. Проверил и в Ворде. Там на пустоту меняется, т.е. происходит удаление заменяемого слова. Как теперь быть? Неужели верстать в Ворди?
 
Ответ: Как заменить текст на пустоту?

а прогнать два раза никак? в первый раз применить стиль по тексту, второй - удалить этот текст (при этом MyInd.ChangeTextPreferences.AppliedParagraphStyle обнулить)
 
Ответ: Как заменить текст на пустоту?

Я тоже с этим много экспериментировал, потому как тоже зачастую в текстах в началах абзацев стоят идентификаторы некие стилей, которые надо присвоить этим абзацам. Если искать что-то, строка замены пустая, но при этом присваивается стиль - замена на "пустоту" не происходит. Присваивается стиль и все. Нужно после этого сделать еще один поиск с заменой, только уже без присвоения стиля. Тогда найденное будет удалено.

В принципе, эта система достаточно удобная. Привыкание достигается очень быстро. В скрипте это означает добавление нескольких лишних строк и все.

sZam, кстати, ведет себя точно также, что, впрочем, неудивительно. Я свои поиски с заменой с присвоением стилей и последующим удалением идентификатора загнал в правила sZam-а и все нормально...

В некоторых системах поиска с заменой есть регулярное выражение для удаления найденного. Но в GREP, похоже, такого нет.
 
Ответ: Как заменить текст на пустоту?

MyInd.FindTextPreferences.FindWhat = "Zag1"
MyInd.ChangeTextPreferences.ChangeTo = " " 'если тут указать
пустую строку, то Zag1 не исчезает,
а заменять на лишний пробел не оч. хорошо
MyObj.ChangeText


Может, ошибка в строке MyObj.ChangeText ?
А если попробовать MyInd.ChangeText ?
 
Ответ: Как заменить текст на пустоту?

iv-mi сказал(а):
Может, ошибка в строке MyObj.ChangeText ?
А если попробовать MyInd.ChangeText ?

Да нет. Аналогично.

Hikage сказал(а):
а прогнать два раза никак? в первый раз применить стиль по тексту, второй - удалить этот текст (при этом MyInd.ChangeTextPreferences.AppliedParagraphStyle обнулить)
Точно - удалилось (туды его в качель)! Т.е. надо два раза прогонять замену (да-а-а, некрасиво... но ничего не поделаешь :n) ).
 
Ответ: Как заменить текст на пустоту?

почему некрасиво? вполне логично, если мне надо по определенным знакам присвоить стиль - я его присваиваю.. (если бы удалялось при этом, вот это бы было совсем не красиво)
 
Ответ: Как заменить текст на пустоту?

Hikage сказал(а):
почему некрасиво? вполне логично, если мне надо по определенным знакам присвоить стиль - я его присваиваю.. (если бы удалялось при этом, вот это бы было совсем не красиво)
Действительно. Сразу и не сообразил. Иначе как менять стили, если бы все при этом удалялось. И в Ворде, ессно также. Т.е. пока стиль или любое другое целевое форматирование присутствует, ничего не удаляется. А как только без форматирования, то все исчезает.

Правильно. Буду пользоваться Индёй (раз такое дело '8)' ).
 
Ответ: Как заменить текст на пустоту?

Всё очень просто:

app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findChangeGrepOptions.includeFootnotes = false;
app.findChangeGrepOptions.includeHiddenLayers = true;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;
app.findGrepPreferences.findWhat = "Ваш текст";
app.changeGrepPreferences.changeTo = "";
app.documents.item(0).changeGrep();
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
 
Статус
Закрыто для дальнейших ответов.