Замените dataType [] на List <dataType> - PullRequest
0 голосов
/ 01 мая 2019

Я сгенерировал с xsd.exe модель данных xsd. Я хотел бы обменять dataType[] с общим списком => List<dataType>. Мне нужно изменить синтаксис автоматически, потому что классы dataModel огромны.

Моим первым намерением было сгенерировать правильный код напрямую с помощью xsd.exe. После некоторого расследования я обнаружил, что это не вариант.

Затем я попытался решить мою проблему с помощью Regex, но мне не повезло найти правильное выражение. Возможно, кто-то может мне помочь. Модификация может быть сделана непосредственно в Visual Studio или если это не работает в Notepad ++.

Что я пытаюсь сделать:

public dataType1[] dataType1 => public List<dataType1> dataType1
public dataType2[][]         => public List<List<dataType2>>
public dataType3[][][]       => public List<List<List<dataType3>>>

Мой подход с Regex в VS:

// Find with:
(?<=\s)[A-Za-z_0-9]+(?=(\[\]){1})

// Replace with:
List<$&>

Мой подход, к сожалению, не работает в один шаг. Кроме того, я должен был бы рассматривать от 1 до n [] отдельно. Наконец, я должен удалить все [] с помощью команды find / replace, что может привести к ошибкам.

Может ли кто-нибудь помочь мне с одношаговым решением? Либо с Regex, либо, возможно, с чем-то другим. Для меня важно решение, которое я могу быстро и легко развернуть после создания модели данных.

1 Ответ

1 голос
/ 02 мая 2019

Вы можете решить эту проблему с помощью макросов nodepad ++.

  1. Нажмите на кнопку Start recording macro

  2. Нажмите Control + H , чтобы запустить поиск и замену

  3. Найти что: (?<=\s)([<>A-Za-z_0-9]+)\[\]

    Заменить на: List<$1>

    Заменить все

  4. Не закрывая диалоговое окно поиска, нажмите Найти следующее

  5. Нажмите на кнопку Stop recording macro.

  6. Теперь перейдите к файлу, который вы хотите обработать

  7. Нажмите на кнопку Run a macro multiple times

  8. Выбрать Run until the end of file

  9. Run

ПРИМЕЧАНИЕ: После того, как вы записали макрос, вы можете «сохранить» его для последующего повторного использования. После сохранения он будет доступен через блокнот ++ перезапусков.

...