scala中字符串手机号练习

26 阅读1分钟

任务目标

  1. 数据读取:从文本文件(如示例中的address.txt)读取包含个人信息的字符串;
  2. 手机号识别:从字符串中提取 11 位手机号(示例中为16607217767);
  3. 最后结果:将手机号中间 4 位替换为掩码(如####),最终输出脱敏后的内容(示例中为166####7767)。
package reg

object reg02 {
  def main(args: Array[String]): Unit = {
    // 1. 读文件:项目下的address.txt
    val source = scala.io.Source.fromFile("address.txt").mkString
    // println(source)

    // 2. 识别手机号
    val reg = "(1[3456789]\d)(\d{4})(\d{4})".r

    // 3. 替换
    // group 分组
    // group(0) 匹配到的整个字符串
    // group(1) 匹配到的第1个括号
    // group(2) 匹配到的第2个括号
    // group(3) 匹配到的第3个括号
    val newSource = reg.replaceAllIn(source, m => {
      println(m.group(0))
      println(m.group(1))
      println(m.group(2))
      println(m.group(3))
      m.group(1) + "****" + m.group(3)
      // println(m.toString)
      // m.toString
    })

    // 4. 输出文件
    val writer = new java.io.PrintWriter("address_new.txt")
    writer.write(newSource)
    writer.close()

  }

}

原文件:

image.png

新文件运行结果:

image.png