输入2025.12.31

21 阅读1分钟
package reg

/**
 * 目标:手机号打码
 *      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
    // 匹配输出
    reg.findAllIn(content).foreach(println)
  }
}

代码解释

  • 文件读取:用Source.fromFile读取文本,mkString将内容转为字符串;
  • 正则匹配1[3-9]\d{9}是国内手机号通用正则(以 1 开头,第二位是 3-9,后面跟 9 位数字);
  • 打码替换replaceAllIn遍历所有匹配到的手机号,通过take(3)(取前 3 位)和takeRight(4)(取后 4 位)拼接成打码格式。