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

20 阅读1分钟

任务:

从一个文本文件(address.txt)中,读出一段内容( 湖北省 潜江市 泰丰办事处 青龙沟小区 X小区X栋1001 李先生 19023488681),把其中的手机号识别出来,并打码

package reg

class reg03 {
  def main(args: Array[String]): Unit = {
   // 1.从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString
    println("读入进来的内容是:")
    println(content)
    //2.写出手机号的范围
    val reg="1[35678]\d{9}".r
    //匹配输出
    reg.findAllIn(content).foreach(println)
  }
}

替换

replaceAllIn,全部替换。在content中通过正则查找字符串,找到后,就换成指定内容,并把最终结果保持到newConcent ①

package reg

class reg03 {
  def main(args: Array[String]): Unit = {
   // 1.从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString
    println("读入进来的内容是:")
    println(content)
    //2.写出手机号的正则
    val reg="1[35678]\d{9}".r
   //val reg ="SB".r
    //匹配输出
    //reg.findAllIn(content).foreach(println)
    //替换
    //val  newContent =reg.replaceAllIn(content,"这有一个手机号")
    val newContent=reg.replaceAllIn(content,m=>{
     //println(s"在replaceAllIn函数中,找到的内容是:${mat}")
     //"手机号:"+m
     //m的第三位+“****”+m的后四位
     m.toString().substring(0,3)+"****"+m.toString()substring(7)
    })
   println("替换之后的内容是:")
   println(newContent)
  }
}

package reg

class reg04 {
  def main(args: Array[String]): Unit = {
   // 1.从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString
    println("读入进来的内容是:")
    println(content)
    //2.写出手机号的正则
    val reg= "1[35678]\d{2}(\d{3})(\d{4})".r
     ///val reg="SB".r
    val newContent=reg.replaceAllIn(content,m=>{
     println(m.group(0))
     println(m.group(1))
     println(m.group(2))
     println(m.group(3))
     m.group(1)+"***"+m.group(3)
    })
   println("替换之后的内容是:")
   println(newContent)
  }
}

把替换的内容写进一个新的文件中

val fileWriter=new FileWriter("newAddress.txt")
fileWriter.write(newContent)
fileWriter.close()