正则表达式应用-手机号打码

9 阅读1分钟

任务:从一个文本文件中(自己准备一个),读出一段内容,把其中的手机号识别出来,并打码。

package reg


object reg03 {
  def main(args: Array[String]): Unit = {
   // 从文本文件读出内容
    val content=scala.io.Source.fromFile("address.txt").mkString
    println("读入的内容")
    println(content)

    //2·写一个手机号的正则
    val reg = "1[3456789]\d{9}".r
    //3·匹配输出
    reg.findAllIn(content).foreach(println)
  }

}

1·本文件读出内容

2·匹配输出

3·替换

package reg

import java.io.FileWriter

object reg04 {
  def main(args: Array[String]): Unit = {
   // 从文本文件读出内容
    val content=scala.io.Source.fromFile("address.txt").mkString
    println("读入的内容")
    println(content)

    //2·写一个手机号的正则
    val reg = "(1[35678]\d{2})(\d{3})(\d{4})".r
    //3·匹配输出
    //reg.findAllIn(content).foreach(println)

    //4替换
    //replaceAllIn:全部替换
   //content中通过正则去找字符串,找到之后,就换成指定内容,并把最终的结果保存到newContent
    //val newContent = reg.replaceAllIn(content,"**********")

   val newContent = reg.replaceAllIn(content,  m=> {
    println("333")
   println(m.group(0))
    println("111")
    println(m.group(1))
    println(m.group(2))
    println(m.group(3))
    m.group(1) +"***" + m.group(3)

   })
   //4把替换之后的内容,写到一个新的文件中
   val fileWriter = new FileWriter("newAddress.txt")
   fileWriter.write(newContent)
   fileWriter.close()

  }

}