这几天认真学习了一下正则表达式,发现以前都是用网上现成的,但是真的自己写正则,真的太NB了。

当然scala的String用的是java的String,Java本身的String就已经很强大了,只不过一些表达方式上还是不一样的。

描述:

给一串ip的字符串,每个ip中间间隔不知数量的空格,提取ip并进行排序

192.168.10.34    127.0.0.1 10.202.205.16     3.3.3.3          44.32.12.23

解决:

1、首先使用val reg2=" +"   将空格分开并转换成ArryBuffer

如果我们现在直接排序,因为存在 3 | 12 | 127长度不一样,因此直接进行sorted结果是错误的。

2、需要将  10.202...  替换成 010.202 ...  将3.3.... 替换成 003.003....

1)、val reg2_2="(\\d+)"    给每段数字都加上两个0 ,即使127也变成00127

2)、val reg2_3="0*(\\d{3})"   将多余的0去掉,每段留3个就行了

3、val reg2_4="0*(\\d+)"   排好序后再将多余的0去掉

代码:

 


    val ipAddress:String="192.168.10.34    127.0.0.1 10.202.205.16     3.3.3.3          44.32.12.23"
    val reg2=" +"
    //提取所有的ip 并转ArrayBuffer
    var ipArr=ipAddress.split(reg2).toBuffer
    val reg2_2="(\\d+)"
    val reg2_3="0*(\\d{3})"
    //加0 再去掉多余的0
    for(i