Я хотел бы иметь возможность редактировать разделы текста следующим образом.

Я мог бы иметь раздел, как показано ниже.

Пример.

Instance=wall

{

    VisGroups=(32)
    MeshFile=wall.gmt CollTarget=False HATTarget=False 
}

Мне нужно найти нужный раздел на основе имени «Экземпляр» в данном случае «стена», а затем изменить сценарий в строке 4

Я хотел бы изменить CollTarget и HatTarget на True,

Простой случай вырезания / вставки, если это только один или два раза, но это может быть до 500 раз, и разделы будут разбросаны по всему тексту, некоторые области будут иметь один и тот же сценарий, например, CollTarget = False HATTarget = False, который не нужно редактировать. Файл может быть длиной до 5000 строк, как в примере ниже

Instance=object350

{

    MeshFile=object350.gmt CollTarget=False HATTarget=False 

}

Instance=box056

{

    VisGroups=(32)
    MeshFile=box056.gmt CollTarget=False HATTarget=False 

}

Instance=wall01

{

    VisGroups=(32)
    MeshFile=wall.gmt CollTarget=True HATTarget=False 

}

Instance=track01

{

    MeshFile=track01.gmt CollTarget=True HATTarget=True
}

Также обратите внимание, что строки в скобках не одинаковы


но в следующем разделе я не хочу этого делать.

Instance=20road007

{

    VisGroups=(32)
    MeshFile=20road007.gmt CollTarget=False HATTarget=True Response=VEHICLE,TERRAIN 

}

например, добавить / вставить дополнительный фрагмент сценария или даже полностью удалить его.


Возможно ли это с помощью макроса? Могу ли я что-нибудь сделать в Notepad++ ..... в нем много команд? Нужно ли мне писать программу на бейсике? Я не понимаю макросов, и мое программирование ограничено.

Как бы я это сделал? Это будет такая экономия времени. Я надеюсь, что я ясно дал понять.

Любая помощь будет принята с благодарностью. Благодарю вас

1 ответ1

1

Я делаю несколько предположений, но, похоже, вы хотите найти все строки, которые содержат

MeshFile=<someValue>.gmt

затем обновите параметры для CollTarget и HATTarget до TRUE, не касаясь других параметров, которые могут быть в этой строке.

Предполагая, что CollTarget и HATTarget всегда являются первыми двумя параметрами, и в том же порядке вы можете выполнить команду «Заменить все» (CTRL+H) для вашего файла и выполнить следующее:

Find what =    (.*)(wall.gmt) CollTarget=(\w+) HATTarget=(\w+)(.*)
Replace with = $1$2 CollTarget=True HATTarget=True$5

Объяснение:

  • Общий синтаксис приведен в документации по Notepad++ Regex (http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions).
  • Любое значение, найденное шаблоном в круглых скобках, будет доступно в синтаксисе «$ N». Число соответствует количеству пар в скобках в выражении поиска.
  • Измените значение во второй паре скобок, чтобы изменить имя экземпляра, для которого вы хотите выполнить замену / обновление. В моем примере я использовал wall.gmt
  • Выражение замены может быть переведено в:
    • Вставьте что-нибудь, найденное в начале строки перед именем экземпляра - материал, найденный с помощью "(. *)"
    • Вставьте искомое имя экземпляра (чтобы вам не приходилось вводить его в поиске и замене выражения)
    • Присвойте новые значения CollTarget и HATTarget
    • Добавить все, что было найдено после HATTarget

Если я предполагаю, что CollTarget и HATTarget не всегда являются первыми или в одном и том же порядке, то вам нужно будет изменить выражение поиска на два отдельных поиска и заменить вызовы, где первый ищет только CollTarget и обновляет значение этого параметра, затем второй один, чтобы найти HATTarget и обновить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .