我是C++用戶,並且有一些代碼使用.at()
來獲取對STL向量的綁定檢查。現在我想將它們更改爲標準[]
。有誰知道可以做到這一點的腳本?它不一定是一個超級通用腳本 - 大多數情況下是.at(i)
或可能.at(a*i+j)
- 但有太多的手工操作。在我的代碼中用[]代替.at()
回答
使用此Perl的操作:
s/\.at\(([^)]+)\)/[$1]/g
的s///
運營商在Perl是一種 「替代」(查找/替換)。在第一組//中,指定要匹配的正則表達式。第二個//是替換或替換匹配的文本。
在這種情況下,我發現任何「.at(任何東西但不是關閉的東西)」的實例,並用「[what-in-those-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
應該適用於大多數簡單的表達式。但是,如果在參數at()中使用括號,則這不起作用。
grep 'at(.*).*)' *.h *.cpp
幫助您識別這些情況,並將其轉換運行所述sed腳本之前。
P.S.如果讓sed像這裏一樣在原地進行操作,那麼請保留備份(例如,通過VCS)。
編輯:應該在發佈之前測試過sed腳本。現在修好了,並經過測試。
sed -e 's/\.at(\([^)]*\))/\[\1]/g
- 1. 替代我的preg_replace代碼
- 2. 我的代碼中的「if else」的替代代碼
- 3. 在子代碼中顯示父代名稱..代替代碼中的子代碼
- 4. 替換代碼中的代碼點擊
- 5. 我的jQuery代碼停止工作時,我使用&代替$
- 6. javax.crypto的JavaScript代替代碼
- 7. 替代cron的PHP代碼
- 8. 在ABAP中是否有替代'at new'的?
- 9. AT命令的輸出C++代碼
- 10. 用空行代替()的TCL代碼
- 11. 我可以用代碼替換jaxb.properties嗎?
- 12. 來自XML代碼的尖括號用HTML代碼代替?
- 13. 在Silverlight中使用Func類型代替Action的代碼簡化
- 14. 如何在我的django代碼中用ListView替換list_detail
- 15. numpy的c源代碼中使用的at符號(@)如何?
- 16. laravel替代代碼塊
- 17. 代碼塊或替代
- 18. JavaScript代碼(jQuery.val();替代)
- 19. python替代gotoxy C代碼
- 20. 替代這個python代碼?
- 21. Javascript替代jQuery代碼
- 22. 替代jQuery代碼或HTML
- 23. C#替代VB代碼
- 24. 解析雲代碼替代
- 25. 用戶代理在.jsp中的替代
- 26. 我如何用另一塊代碼通過JQuery代替另一塊代碼
- 27. 閱讀AT命令結果代碼
- 28. 例外代碼:KERN_PROTECTION_FAILURE at 0x00000000錯誤
- 29. 用innerhtml代替內部JavaScript代碼?
- 30. 用短代碼功能代替單詞
有什麼不好'S,\。在\(I \),\ [I \],g'? –
只適用於單個變量名稱。他可能想要使用反向引用的東西。 –
你爲什麼要這樣做?如果爲了提高性能,請在轉換之前和之後檢查一下,如果差值小於20%,我會建議恢復更改 –