正则表达式(1.3)

38 阅读1分钟

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

import scala.io.Source
import java.io.PrintWriter
import java.io.File

object reg05 {
  def main(args: Array[String]): Unit = {
    // 1. 定义文件路径(可根据实际情况修改)
    val inputFilePath = "input.txt" // 原始包含手机号的文本文件
    val outputFilePath = "output.txt"  // 脱敏后保存的新文件                                         
    try {
      // 2. 读取输入文件的所有内容
      // 按行读取,保留原文本格式
      val originalLines = Source.fromFile(inputFilePath, "UTF-8").getLines().toList

      // 3. 手机号识别与打码处理
      // 正则表达式匹配中国大陆手机号(11位,以1开头,覆盖常见号段)
      val phoneRegex = """(1[3-9]\d{9})""".r
      val desensitizedLines = originalLines.map { line =>
        // 替换手机号中间4位为####,保留前3位和后4位
        phoneRegex.replaceAllIn(line, m => {
          val phone = m.group(1)
          s"${phone.substring(0, 3)}####${phone.substring(7)}"
        })
      }
      // 4. 将脱敏后的内容写入新文件
      val printWriter = new PrintWriter(new File(outputFilePath), "UTF-8")
      desensitizedLines.foreach(printWriter.println)
      printWriter.close()
      println("手机号脱敏完成!")
      println(s"原始文件:$inputFilePath")
      println(s"脱敏文件:$outputFilePath")
    } catch {
      case e: java.io.FileNotFoundException =>
        println(s"错误:未找到文件 $inputFilePath,请确认文件路径是否正确。")
      case e: Exception =>
        println(s"错误:${e.getMessage}")
    }
  }
}

13.png