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

87 阅读4分钟
/**
 * 目标:手机号码
 * 13612345678 -> 136****5678
 *
 * 任务:从一个文本文件中,读出一段内容,把其中的手机号识别出来,并打码。
 * address.txt
 * 湖北省 潜江市 泰丰办事处 青龙沟小区 x栋3单元 沈先生 15812347894,15512345678
 */
object reg04 {
  def main(args: Array[String]): Unit = {
    //1.从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString

      println("读入进来的内容是:")
      println(content)

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

  }
}

replaceAllin正则替换

功能:对目标字符中的内容,进行正则查找,对找到的内容使用指定的内容进行替换,并返回替换之后的字符串。

格式:正则.replaceAll(目标字符串, 匹配到的内容 => 要替换的内容 )

来,我们看一个简单的例子:把目标字符串中的字符BC换成01。

/**
 * 目标:手机号码
 * 13612345678 -> 136****5678
 *
 * 任务:从一个文本文件中,读出一段内容,把其中的手机号识别出来,并打码。
 * address.txt
 * 湖北省 潜江市 泰丰办事处 青龙沟小区 x栋3单元 沈先生 15812347894,15512345678
 */
object reg04 {
  def main(args: Array[String]): Unit = {
    //1.从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString

      println("读入进来的内容是:")
      println(content)

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

    //替换:正则的典型的应用场景
    //replaceAllIn,全部替换。
    //在content中通过正则去找字符串,找到了之后,就换成指定的内容,并把最终的结果保存到newContent
   val newContent = reg.replaceAllIn(content,"这有个手机号")

    println("替换之后的内容是:")
    println(newContent)
  }
}
/**
 * 目标:手机号码
 * 13612345678 -> 136****5678
 *
 * 任务:从一个文本文件中,读出一段内容,把其中的手机号识别出来,并打码。
 * address.txt
 * 湖北省 潜江市 泰丰办事处 青龙沟小区 x栋3单元 沈先生 15812347894,15512345678
 */
object reg04 {
  def main(args: Array[String]): Unit = {
    //1.从文本文件中读出内容
    val content = scala.io.Source.fromFile("address.txt").mkString

      println("读入进来的内容是:")
      println(content)

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

    //替换:正则的典型的应用场景
    //replaceAllIn,全部替换。
    //在content中通过正则去找字符串,找到了之后,就换成指定的内容,并把最终的结果保存到newContent
    //val newContent = reg.replaceAllIn(content,"这有个手机号")
    val newContent = reg.replaceAllIn(content,m =>{
      //println(s"在replaceAllIn函数中,找到的内容是:${m}")
      //"手机号:"+m
      //m的前三位+"****"+m的后四位
      m.toString().substring(0,3)+"****"+m.toString().substring(7)
    })
    println("替换之后的内容是:")
    println(newContent)
  }
}
/**
 * 目标:手机号码
 * 13612345678 -> 136****5678
 *
 * 任务:从一个文本文件中,读出一段内容,把其中的手机号识别出来,并打码。
 * address.txt
 * 湖北省 潜江市 泰丰办事处 青龙沟小区 x栋3单元 沈先生 15812347894,15512345678
 */
object 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
    //匹配输入
    reg.findAllIn(content).foreach(println)

    //替换:正则的典型的应用场景
    //replaceAllIn,全部替换。
    //在content中通过正则去找字符串,找到了之后,就换成指定的内容,并把最终的结果保存到newContent
    //val newContent = reg.replaceAllIn(content,"这有个手机号")
    val newContent = reg.replaceAllIn(content,m =>{
      println(m.group(0))
      println(m.group(1))
      println(m.group(2))
      println(m.group(3))
      //println(s"在replaceAllIn函数中,找到的内容是:${m}")
      //"手机号:"+m
      //m的前三位+"****"+m的后四位
     // m.toString().substring(0,3)+"****"+m.toString().substring(7)
      m.group(1)+"***"+m.group(3)
    })
    println("替换之后的内容是:")
    println(newContent)
  }
}
import java.io.FileWriter

/**
 * 目标:手机号码
 * 13612345678 -> 136****5678
 *
 * 任务:从一个文本文件中,读出一段内容,把其中的手机号识别出来,并打码。
 * address.txt
 * 湖北省 潜江市 泰丰办事处 青龙沟小区 x栋3单元 沈先生 15812347894,15512345678
 */
object 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
    //匹配输入
    reg.findAllIn(content).foreach(println)

    //替换:正则的典型的应用场景
    //replaceAllIn,全部替换。
    //在content中通过正则去找字符串,找到了之后,就换成指定的内容,并把最终的结果保存到newContent
    //val newContent = reg.replaceAllIn(content,"这有个手机号")
    val newContent = reg.replaceAllIn(content,m =>{
      println(m.group(0))
      println(m.group(1))
      println(m.group(2))
      println(m.group(3))
      //println(s"在replaceAllIn函数中,找到的内容是:${m}")
      //"手机号:"+m
      //m的前三位+"****"+m的后四位
     // m.toString().substring(0,3)+"****"+m.toString().substring(7)
      m.group(1)+"***"+m.group(3)
    })
    //4.把替换之后的内容,写入到一个新的文件中
    val fileWriter=new FileWriter("newContent.txt")
    fileWriter.write(newContent)
    fileWriter.close()
  }
}