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

31 阅读1分钟

1.replaceAllin正则替换

/**
 *
 * 任务:从一个文本中(自己准备一个),读出一段内容,把其中的手机号识别出来,并打码
 *      address。txt
 *
 *
 */
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{9}".r
    //val reg = "SB".r
    //匹配输出
    //reg.findAllIn(content).foreach(println)

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

    println("替换后的内容是:")
    println(newContent)

  }
}
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{9}".r
    //val reg = "SB".r
    //匹配输出
    //reg.findAllIn(content).foreach(println)

    //替换:正则的典型的应用场景
    //replaceAllIn 全部替换。
    // 在content中通过正则去找字符串,找到之后,就换成指定的内容,并把最终结果保存到newContent
    //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)

  }
}
import java.io.FileWriter
/**
 *
 * 任务:从一个文本中(自己准备一个),读出一段内容,把其中的手机号识别出来,并打码
 *      address。txt
 *
 *
 */
object reg05 {
  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
    //匹配输出
    //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函数中,找到的内容是:${mat}")
//      "手机号:" +m
//        m的前三位  + "****" + m的后四位
        m.group(1) + "***" + m.group(3)
    })

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

  }
}