題目:
#和秋葉一起學Word# S04-4課的變態級別挑戰:利用替換表達式,一次性將三等獎的12位電話號碼刪掉最后一個數字,并且將電話號碼斷開,加上短劃線符號,更改成3-4-4格式。
解題思路:
1、首先你要將11位手機號碼的表達式轉變為可應用于12位的手機號碼
2、其次你要刪掉最后一個數字
3、并且加上短劃線符號,為3-4-4格式
4、前面提到的3點必須同步進行
解題過程:
根據已知條件,11位手機號碼時,表達式為 ([0-9]{3})([0-9]{4})([0-9]{4}[!0-9])
將( )看做一個整體,該表達式被分為三段
[0-9] 表示三段字符為任意數字
{? } 內的數字表示3、4、4個字符
[!0-9] 的存在不是必須的,可不用搭理(稍后有解釋)
那么相應的,12位手機號碼的表達式可以這樣寫(請在英文狀態下輸入)
被分為四段,表達式:(? )(? )(? )(? )
[0-9]必須存在,填進括號里,表達式為: ([0-9])([0-9])([0-9])([0-9])
字符數分別為 3、4、4、1,表達式為:([0-9]{3})([0-9]{4})([0-9]{4})([0-9]{1})
現在查找內容一項已經解決(記得勾選使用通配符)
接下來是替換一欄如何填寫
根據已知條件,手機號碼打碼時的表達式為 \1****\3
\1 代表引用查找內容的第1段,
**** 代表你打碼時所呈現的格式
同理,\3 代表引用查找內容的第3段
那么,12位手機號碼被劃分為4段,表達式為 \1\2\3\4
又因為題目要求刪掉最后一個數字,也就是說 \4 沒必要寫
又因為題目要求加上短劃線符號,所以替換一欄改寫為? \1-\2-\3
so……
為什么之前說?[!0-9]?的存在不是必須的,是因為當你在表達式中添加它時,
會出現這種現象(我也不知道這種現象叫什么)
又因為在做普通挑戰的題目時,刪掉?[!0-9]?,前后對比的答案并沒有任何區別。
so……
總結:
一開始我看到這個題目,我是拒絕的,有種“臥槽,看上去好難的樣子”。擱平時,我都不會去嘗試的。
現在這篇解析,是我花了2個小時盯著那個復雜的表達式(其實并不復雜),各種查資料,參考別人解答,
由最開始的“什么鬼,根本看不懂,老師的題目太變態了吧”,(盡管老師有給普通題的解題思路,然而我并沒有看懂)
到中間的“原來3個括號分成了3段啊,我怎么到現在才明白過來,原來老師說的是這個樣子啊”,
再到最后的“原來也不過如此嘛,又掌握了一項酷(zhuang)炫(bi)技能。”
我心態上的轉變也是自己始料未及的。
秋葉老師在《不要等到畢業以后》一書中提到:
其實,你和高手之間只差了一個行動。
一切都沒有你想象的那么難。
(PS:本文的解題過程可能有很多缺陷,真的不好意思,因為作者也是個小白,只能用很傻很笨的方法一步步嘗試,請大家多多包涵)