2018年,我印象最深刻的一本書
【圖靈徵文活動】
無論是在日常的一般工作中還是程式設計中,與我們打交道最為頻繁的東西就是各種編輯器,不可否認的是,我們天天都在和那一串串、一行行的字串打交道。對於程式設計者而言,字串的處理那就更是家常便飯。
有時候,我們需要對大量的文字通過程式碼進行解析,以抽取關鍵內容;有時候,我們需要對各種使用者的輸入進行非常苛刻的、符合特定業務邏輯條件的合法性檢查;甚至有時候,我們在工作中,需要手動對一些大文字進行 copy & paste 的操作,貼上的文字之後可能需要做批量格式轉換才能用在另外的地方(在我十多年的工作中,就經常遇到過這種問題。如果純手工的操作,你會奔潰的!)。所以說,在我們的開發中,如何高效的處理字串、提高效率就成為了每一個程式設計師日常工作中非常重要的一部分。
這一強大的工具就是正規表示式。幾年前,對於剛接觸正則的我,對於正則似乎有著一種在很多程式設計師看來非常不感冒的莫名的歡喜心和好奇心。於是,在網上一番搜尋之後,買下了個這本看似名字很裝逼,但實際上內容非常牛逼的大神作品《精通正規表示式》(第三版)。為什麼說看似裝逼呢?因為“精通”一詞在茫茫書海中早已經被用爛了,凡是“精通XXX”基本上就和精通沒啥關係了。就好像很多“XXX 高階程式設計”跟高階其實也沒啥關係。
當你閱讀完整本書並能完全理解的時候,不誇張的說,你就會有一種“被打通了任督二脈”的感覺。他不僅能幫你更好的系統性地理解正規表示式,而且還能幫你完善自己的邏輯思維,用正則去思考問題(think regular expression),用正則去解決問題。實際上,與其說能夠幫助你在工作中更好地解決問題,倒不如說能夠極大地提高你的工作效率。下面舉兩個平時工作中的例子:
比如:我們平時在釋出應用程式的時候,config 檔案是不能直接 copy paste 的,需要用自己的本地檔案和 production 環境的檔案進行比較,以確定哪些地方需要修改,但是有時候,程式並不是你寫的,但是你接手了,你需要使用專門的檔案比對工具對 config 檔案進行比較。有時候你會發現,配置檔案中會出現一個包含非常長的文字的節點(鬼知道他為什麼要這麼做)。文字密密麻麻的使用指定的分隔符(一般是分號/豎線等等)進行分割,但是並未換行,每一個分隔符之間的分段子串又套著指定格式的“馬甲”或者“全裸”,即便設定了自動換行,比較器(即便是優秀的 beyondcompare)的顯示結果中清晰直觀的比對效果也會讓你頭暈,這個時候最好的方法就是使用正則先對文字進行替換,用換行替換分隔符,然後對文字進行比較,區別之處就顯而易見了。
再考慮以下場景。我有一個 XML 檔案,裡面包含了上萬行的程式碼。根節點下面有若干個 <set> 節點,每一個 <set> 節點下面包含上千個 <identifier> 節點,每個 <identifier> 節點都有一個 value attribute,類似於 <identifier value="827373632" />,當進行測試的時候,我們需要對結果進行驗證,驗證最有效的方式就是抽取指定 <set> 節點下面的這些 <identifier> 的 value 的值,並將這些值加上單引號,並用逗號進行分割、拼接,但是呢,又不能拼成一整行,需要每 7 – 10 個 value 換一行,並且在頭尾加上小括號,這樣程式碼會看起來直觀整潔。就像下面這樣:
Select * from SomeTable
where productID in
(
‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’,
‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’,
‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’, ‘12345’,
......
)
類似的使用場景還有很多,以上這些都可以在 VS 編輯器中使用正規表示式進行替換,還有更為複雜的替換在此不一一列舉,真的很強大。當使用正則語法替換出想要的東西瞬間刷屏的時候,會有一種莫名的舒心感~
相關文章
- 2018年,我讀過的一本讓我印象深刻的書
- 2018年,我印象最深刻的一本書《古老之美》
- 《人工智慧簡史》—— 2018年我印象最深刻的一本書人工智慧
- 在風雨中永恆(2018年我印象最深刻的一本書)
- 《被討厭的勇氣》--2018年,我印象最深刻的一本書
- 2018年,我印象最深刻的一本書——《三體2之黑暗森林》
- 2018年,我印象最深刻的一本書《TCP/IP網路程式設計》TCP程式設計
- 2018年我印象最深刻的一本書 - 《遊戲設計夢工廠》遊戲設計
- 2018年,我印象最深刻的一本書《實戰Java高併發程式設計》Java程式設計
- 自控力(2018我印象最深的一本書)
- 讓我印象深刻的javascript面試題JavaScript面試題
- 我最推薦的一本技術書
- 《原則》-- 2018讀過的印象最深的一本書
- 回顧2022,那些令人印象深刻的AI突破AI
- git: 記一次push的錯誤,印象深刻Git
- 我最推薦的一本技術書《機器學習實戰》機器學習
- 讀書日——我最推薦的一本技術書籍《程式設計師面試金典(第6版)》程式設計師面試
- 我寫的第一本書《TypeScript 入門教程》TypeScript
- 刺激!ChatGPT給我虛構了一本書?ChatGPT
- 前端:說說工作中解決過的印象比較深刻的問題前端
- 《我的第一本演算法書》筆記一演算法筆記
- 我是如何寫出一本暢銷技術書的
- 我的第一本書,被選作大學教材了!
- js/ts prototype最簡單且深刻的理解JS
- 如何給玩家留下深刻印象?這個小團隊是這樣做的
- 程式設計師的副業:我的第一本書出版啦!程式設計師
- Python書籍|分享一本Python的書籍Python
- 宛如一張美好且內涵滿滿的老照片,《野火流明》讓人印象深刻
- 我們的第一本書,記錄草長鶯飛的AI時代AI
- 《原神》李軼軒:透過限時活動建立令人印象深刻的開放世界技巧【GDC 2024】
- 華熙LVIE五棵松打造沉浸式互動,打造令人印象深刻的都市生活圈
- 程式設計師的副業:2021年初,寫完了我的第一本書程式設計師
- 一本書,教你賞,教你寫
- 《如何有效閱讀一本書》讀書筆記筆記
- 《我的第一本程式設計書》第八章 可以操作的程式,操作方塊程式設計
- 《我的第一本程式設計書》第七章 為儲存區起名,更多的中文程式設計
- 一本好書有多少價值?
- 給入門Java的小白推薦一本書Java