Я создал с помощью 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 [] отдельно. Наконец, я должен удалить все [] с поиском/заменой, что может привести к ошибкам.
Может ли кто-нибудь помочь мне с одношаговым решением? Либо с Regex, либо, возможно, с чем-то другим. Для меня важным было бы решение, которое я могу быстро и легко развернуть после создания модели данных.





Вы можете решить эту проблему с помощью макросов nodepad++.
Нажмите на кнопку Start recording macro
Нажмите Control + H, чтобы запустить поиск и замену.
Найдите что: (?<=\s)([<>A-Za-z_0-9]+)\[\]
Заменить на: List<$1>
Replace all
Не закрывая диалог поиска, нажмите на Find Next
Нажмите на кнопку Stop recording macro.
Теперь перейдите к файлу, который вы хотите обработать
Нажмите на кнопку Run a macro multiple times
Выберите Run until the end of file
Run
ПРИМЕЧАНИЕ: После того, как вы записали макрос, вы можете «сохранить» его для последующего повторного использования. После сохранения он будет доступен при перезапуске Notepad++.
Привет @Julio, большое спасибо за это руководство. Это работает очень хорошо для меня. Чтобы завершить эту тему, было бы интересно увидеть и ваше одношаговое решение. Макросы Notepad ++ великолепны, и я до сих пор не имел их в виду.
@Nindalf, отредактировано, чтобы не зависеть от 999 раз. Надеюсь, это сработает для вас (изменения: добавьте дополнительный шаг после шага «3» и измените второй на последний шаг
Если вы хотите пропустить
repeat XXX times, это все еще возможно с помощью одного действияplay, но вам нужно записать несколько дополнительных шагов. Если вы предпочитаете это, просто дайте мне знать, и я перепишу свой ответ @nindalf