题目:
#和秋叶一起学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:本文的解题过程可能有很多缺陷,真的不好意思,因为作者也是个小白,只能用很傻很笨的方法一步步尝试,请大家多多包涵)