Scala中的正则表达式(二)

29 阅读1分钟

要求:

  1. 从文本文件中读入一些包含手机号的字符串
  2. 把手机号识别出来
  3. 把手机号的中间 4 位打码,保存到一个新的文本文件中

第一步:创建一个“input.txt”的文件 Snipaste_2025-12-23_11-21-08.png 第二步:在文件中添加信息 Snipaste_2025-12-23_11-20-30.png

第三步:写代码并运行

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{9}".r
  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()
}

第四步:运行成功后会生成一个新的“output.txt”文件

Snipaste_2025-12-23_11-25-02.png

Snipaste_2025-12-23_11-25-16.png