Я пользователь C++ и получил код, который использует .at()
, чтобы получить проверку привязки к векторам STL. Теперь я хотел бы изменить их на стандарт []
. Кто-нибудь знает сценарий, который может это сделать? Это не должен быть супер общий сценарий - большинство случаев - .at(i)
или, возможно, .at(a*i+j)
- но их слишком много, чтобы сделать это вручную.Замена .at() на [] на протяжении всего моего кода
ответ
Используйте этот оператор Perl:
s/\.at\(([^)]+)\)/[$1]/g
s///
оператор в Perl является "заменителем" (найти/заменить). В первом наборе // вы указываете регулярное выражение для соответствия. Второй // - это текст для замены или замены этого совпадения.
В этом случае я нахожу любой экземпляр «.at (anything-but-a-close-paren)» и заменяю его «[what-was-in-the-parens]».
В однострочника,
perl -pe's/\.at\(([^)]+)\)/[$1]/g' in.cpp > out.cpp
Если вы используете Visual Studio, сделать это в Находке/Заменить строки:
Найти Что: \.at\({[^)]+}\)
Заменить: \[\1\]
Включите регулярные выражения, и вы хорошо пойдете.
Надеюсь, вы не против, я добавил, как использовать s ///. – ikegami
Нет, спасибо. Улучшение ответа никогда не является проблемой. – kevlar1818
sed -i 's,\.at(\([^\)]*\)),[\1],g' *.h *.cpp
должен работать для самых простых выражений. Однако, если вы используете круглые скобки внутри параметра с параметром(), это не сработает.
grep 'at(.*).*)' *.h *.cpp
помогает идентифицировать эти случаи и преобразовывать их до того бегущий сказал СЭД сценарий.
P.S. Держите резервную копию вокруг (например, через VCS), если вы позволите sed работать на месте, как здесь.
EDIT: должен был протестировать этот сценарий sed перед публикацией. Исправлено и проверено.
sed -e 's/\.at(\([^)]*\))/\[\1]/g
- 1. Используйте данные JSON на протяжении всего моего кода
- 2. Модели доступ на протяжении всего Rails Применения
- 3. Как сохранить переменную на протяжении всего сеанса?
- 4. Отключение jToggleButton на протяжении всего исполнения, возможно?
- 5. Как сохранить cookie на протяжении всего сеанса?
- 6. Используйте выбранный пользователем путь к файлу на протяжении всего моего кода
- 7. Устойчивость SQLite на протяжении всего жизненного цикла приложения на iOS
- 8. Как заставить кнопку появляться и исчезать на протяжении всего таймера
- 9. Управление просмотром камеры SurfaceView на протяжении всего жизненного цикла активности?
- 10. Замена моего бита кода exec()
- 11. Как сохранить значения объекта фильтра на протяжении всего сеанса
- 12. IntelliJ применять инспекции исправить на протяжении всего файла
- 13. Android Back Arrow Анимация на протяжении всего приложения
- 14. сохраняют переменную на протяжении всего срока службы приложения в mvc
- 15. Создайте единый экземпляр HashMap в Java на протяжении всего сеанса
- 16. Используйте результат поиска() на протяжении всего сайта cakePHP
- 17. Rails - Хранить данные API на протяжении всего сеанса
- 18. уникальный идентификатор на протяжении всего жизненного цикла приложения
- 19. Обработка исключений на протяжении всего жизненного цикла деятельности/фрагмента
- 20. JQuery/JavaScript Плавная прокрутка на протяжении всего сайта
- 21. отключить кнопки на протяжении всего приложения в андроиде
- 22. Джерси 2 делают класс/объект сохраняется на протяжении всего приложения
- 23. , как получить доступ одного массива на протяжении всего проекта Java
- 24. Возможно ли сохранить разрешения на протяжении всего запроса?
- 25. Как я могу заменить различные длинные строки для более коротких строк на протяжении всего моего фреймворка?
- 26. Как и где объявлять глобальную переменную, доступную на протяжении всего моего приложения MVC/single page
- 27. проверки на протяжении семестра
- 28. Закругленный угол на всем протяжении
- 29. Замена всего слова на сервере sql
- 30. Как бороться с кодом Android ActionBar на всем протяжении кода?
Что не так с 's, \. At \ (i \), \ [i \], g'? –
Это работает только с одним именем переменной. Вероятно, он хочет чего-то, что использует обратные ссылки. –
Почему вы хотите это сделать? если для улучшения производительности, пожалуйста, проверьте его перед конвертированием и после, а если разница меньше 20%, я бы рекомендовал вернуть изменения. –