第四章 字符串與兇手
下一刻,楊成出現(xiàn)在了一個橢圓形的辦公室中。
他西裝筆挺,,打著瀟灑的領(lǐng)帶,,像極了某行業(yè)的成功人士或精英,。
不過,,墻壁上掛著的一幅米字國旗表明了他現(xiàn)在所處的地理位置,,他是以“約翰?!钡纳矸莩霈F(xiàn)的,。
打量著四周,,楊成發(fā)現(xiàn)了很多書籍和檔案文件。
我扮演的這廝到底是干嘛的,?
不過,,這疑問并不妨礙楊成第一時間發(fā)現(xiàn)辦公桌上的一臺臺式電腦。
他就如同發(fā)現(xiàn)了外星人一般驚喜,。
“讓我看看里面究竟有些什么好東西,?”
楊成打開電腦,期望能從里面找到例如小電影般的東東,。
桌面上排列著很多花花綠綠的圖標,。
楊成甚至還發(fā)現(xiàn)了一款大型的單機游戲——“XX召喚”。
“真是酷斃了,!”
他滿懷期待地雙擊圖標,,期望著在里面大殺四方。
畢竟完成任務(wù)是其次的,,享受生活才是NumberOne,。
令人失望的是,電腦毫無反應(yīng),。
就如同死機了一般陷入沉寂...
“歐,!我早該想到!”
楊成以手掩面,。
這關(guān)卡中的虛擬物品,,不重要的部分當(dāng)然不會做得太真實,把寶貴的資源浪費在無關(guān)緊要的末節(jié)上,,這是任何一個游戲運營所無法忍受的,。
就在這時,辦公室的門被敲響了,,聽起來有些急切,。
“請進”,楊成一聽就知道任務(wù)來了,。
門被推開,,走進來一位身穿警官制服的中年肥胖男子,他的眼神中充滿了敬意,。
“你好,,我是蘇格蘭場的警官麥克阿瑟,。”
“我們很早就聽聞您在信息學(xué)方面的非凡造詣,,懇請您協(xié)助我們調(diào)查一起案件”,。
警官麥克阿瑟開門見山地說道。
“喔,,愿聞其詳”,。
楊成很爽快地答應(yīng)了。
聽起來事情有些獵奇,。
“事情是這樣的”,。
“有一位關(guān)鍵的目擊證人被謀殺了,他在臨死前想說出兇手的姓名,,但聲音很微弱又斷斷續(xù)續(xù)的,,難以分辨?!?p> “我們獲取了他的錄音,希望能在您這里得到幫助,,看怎么找出兇手”,。
楊成表現(xiàn)出一副饒有興趣的模樣。
“嗯,,你們可有嫌疑人名單,?”
“有的,我們把行兇者鎖定在了四個人之中,,但又不確定到底哪個人才是真兇”,。
麥克阿瑟遞過來一份文件,上面有四個英文名字:
Bernard Deltheil
Peter Gone
Peter Reeves
Roland Scorsini
“能先聽聽這段錄音嗎,?”
楊成提出了要求,。
光憑幾個英文姓名,恐怕大偵探福爾摩斯也查不出個所以然來,。
麥克阿瑟掏出一支錄音筆,,摁下上面的按鈕。
一個細若游絲的聲音傳了出來,。
“p~t~g”,。
這聲音真是讓人毛骨悚然,猶如地獄之聲,。
證人在最后時刻說了五個字母,,其中還有2個字母無法分辨。
楊成當(dāng)然不認為字符串的長度就意味著名字的長度,,因為他有可能在說出兇手完整名字前就咽氣了,。
“好的,,請稍等”。
楊成幾乎可以肯定是哪個人,,但因為游戲任務(wù)規(guī)則,,他不能直接說出答案,而是得用程序員的方式來解決——敲代碼,。
他在電腦上打開一個編輯器,,建立了一段腳本,然后開始編寫代碼,。
對于任何的字符串匹配,,是傻乎乎地用邏輯+循環(huán),還是用強大而且簡潔的正則表達式,,我想大部分程序員都會傾向于后者,。
楊成對于這個問題很有自信,一小段正則驗證便足矣,。
正則表達式的性能可能會略低,,但它的確很方便啊。
對于這個兇手名稱匹配來講,,它是不區(qū)分大小寫的,,所以得加“i”參數(shù),以表示大小寫不敏感,。
?。╥nsensitive)
楊成很輕易地完成了這次匹配,甚至用了不到100個字符,,假如去掉空格,、括號和分號,代碼甚至?xí)獭?p> 正則就是爽,!
然而,,值得注意的地方,因為正則表達式趨向于極致的簡潔,,它的所有部分都被緊密地排列在一起,。
在早期的JavaScript中,不支持正則的注釋與分段,,所以很長的表達式很容易讓人費解,,增加閱讀困難。
對待比較復(fù)雜的業(yè)務(wù)邏輯,,最好是拆分成幾個短正則,,分別驗證,這樣維護和調(diào)試起來就更方便,。
他深吸一口氣,,將代碼和運行結(jié)果保存好,。
“警官,我想我已經(jīng)找出兇手了”,。
楊成臉上帶著神秘的微笑,。
“哦?是嘛,!快講給我聽聽,!”
麥克阿瑟按捺不住地想趕快知道結(jié)果。
楊成拿出一支簽字筆,,在嫌犯名單的第二個“Peter Gone”上面劃了個圈圈,,然后遞給他。
“噢,,真是太感謝您了,!”
麥克阿瑟伸出手,緊緊地握了握楊成的手,。
話說完,,警官腆著個大肚子,晃悠悠地揮手告別,。
看著麥克阿瑟走出門外,,楊成后仰在皮沙發(fā)上,舒服地把雙手交叉放在后腦勺,。
“叮!”
系統(tǒng)聲音及時地響起來,。
“恭喜玩家您完成了找出兇手的任務(wù),!”
“先前積分17分”。
“使用正則表達式匹配字符串獎勵2分”,。
“代碼量在100個字符以內(nèi)獎勵1分”,。
“當(dāng)前積分20分,擊敗了全球13%的玩家”,。
“不錯”,,楊成拍了拍手。
這個積分系統(tǒng)還考慮到了代碼量問題,,可以說是比較完善,。
“您要繼續(xù)下面的挑戰(zhàn)嘛?”
“不不不”,,楊成擺擺手,。
“讓我先在這舒適的辦公室和皮沙發(fā)上,享受一段快樂的午休時間”,。
“有什么需要幫忙的嘛,?”
這系統(tǒng)則展現(xiàn)出了人性化的一面,。
“首先,你看我這身裝扮,,肯定不適合午睡”,。
楊成努努嘴。
“給我來一身睡覺三件套,,睡衣,,睡褲,還有睡帽”,。
“我還需要一個超大的豪華型,,歐式風(fēng)格大床”。
“恒溫的中央空調(diào)”,。
“一個睡覺醒來可以隨時看到加勒比海風(fēng)景的海景房間”,。
“嗯,就這些了”,。
“親愛的系統(tǒng),,你能辦到嘛?”
楊成表示懷疑,。
“能”,,系統(tǒng)肯定地說道。
“不過我得先讀取一些配置文件,,這得花上點時間”,。
“很好!去吧,,我的皮卡丘,!”
楊成決定了以后不叫“系統(tǒng)”了,還是“皮卡丘”這個詞兒比較帶勁,。
大概過了半分鐘,,楊成感覺自己身形一震,很快發(fā)生了空間移動,。
溫暖的海風(fēng)吹拂在他的臉上,。
這里四季如春,擁有他剛才所想要的一切,。
穿著睡衣,、睡帽、睡褲,,他傻呆呆地看著窗外的風(fēng)光,。
“我虧大了”,楊成卻有些沮喪,。
“我應(yīng)該還要求選50個加勒比的絕色佳麗來服侍我的”,。
“喂,,皮卡丘,能幫我搞到手嘛,?”
系統(tǒng)那邊卻是毫無反應(yīng),,似乎厭倦了楊成的貪得無厭。
“喂,,皮卡丘,?系統(tǒng)?”
楊成不死心,。
“好吧”,。
楊成兩手一攤,表示放棄,。
然后,,他兩眼一閉,倒在了豪華大床上,。
在游戲里面,,時間會過得非常快,,尤其是當(dāng)你處于掛機,、休眠或者娛樂狀態(tài)的時候。
有可能在游戲中呼呼大睡了8個小時,,而外面的世界才過去幾十分鐘,。
(zzz...)