正则表达式案例

18 阅读1分钟

任务:

1.从根目录下读出address.txt的内容

2.找到其中的合法的手机号,把中间4位用*代替

3.把结果写入到address_new.txt文件中

package reg
import java.io.FileWriter

object reg04 {
  def main(args: Array[String]): Unit = {
    //1.从根目录下读出address.txt的内容
    val content = scala.io.Source.fromFile("address.txt").mkString
    println("读到的文件内容如下:")
    println(content)
    
    //2.找到其中的合法的手机号
    val reg = "1[35789]\\d{9}".r   //以1开头,第二位数字只能是3,5,7,9,共11位
   println("找到的合法手机号如下:")
   reg.findAllIn(content).foreach(ele=>println(ele))

    //3.把手机号中间4位用*代替
    val newContent = reg.replaceAllIn(content,ele => { 
      val phone = ele.toString()
      phone.substring(0,3) + "****" + phone.substring(7) ////手机号前3位 + "****" + 手机号后4位
    })
    println("替换后的内容如下:")
    println(newContent)

    //4.把结果写入到address_new.txt文件中
    val fileWriter = new FileWriter("address_new.txt")
    fileWriter.write(newContent)
    fileWriter.close()
  }
}

运行结果如图:

image.png

address_new.txt的文件内容为:

image.png

代码第二步优化

    //2.找到其中的合法的手机号,把中间4位(3-4-4)用*代替
      val reg = "(1[356789]\d\d)(\d{4})(\d{3})".r
   println("找到的合法手机号如下:")
   reg.findAllIn(content).foreach(ele=>println(ele))
   
    val newContent = reg.replaceAllIn(content,ele => {
      println(ele.group(0))
      println(ele.group(1))
      println(ele.group(2))
      println(ele.group(3))
      //手机号前3位 + "****" + 手机号后4位
      ele.group(1) + "****" + ele.group(3)
    })

运行结果如图:

image.png