reg

32 阅读1分钟
  • 目标: 手机号码 13612345678 --> 136****5678
  • 任务:从一个文本文件中(自己准备一个),读出一段内容,把其中的手机号识别出来,并打码。 address.txt 湖北省 潜江市 泰丰办事处 青龙沟小区 X栋3单元 樊先生 13612345678,18712345678
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函数中,找到的内容是: ${m.mat}")
      // "手机号:" + m
      // m的前三位 + "******" + m的后四位
      m.toString().substring(0, 3) + "****" + m.toString().substring(7)
    })

    println("替换之后的内容是:")
    println(newContent)
  }
}
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{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函数中,找到的内容是: ${m.mat}")
      // "手机号:" + m
      // m的前三位 + "******" + m的后四位
      m.toString().substring(0, 3) + "****" + m.toString().substring(7)
    })

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