正则表达式(练习)1.4

23 阅读1分钟

题目

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

【例如】

小花,湖北潜江盛世城3楼303号,13133312146

👇

小花,湖北潜江盛世城3楼303号,131####2146

代码

package reg

object reg02 {
  import scala.io.Source
  import java.io.{File, PrintWriter}

    // 匹配11位手机号的正则表达式(可根据实际需求调整匹配规则)
    private val phoneRegex = """(\d{3})\d{4}(\d{4})""".r

    /**
     * 对文本中的手机号进行脱敏处理
     * @param text 原始文本
     * @return 脱敏后的文本
     */
    def maskPhoneNumbers(text: String): String = {
      // 替换手机号:保留前3位和后4位,中间4位替换为####
      phoneRegex.replaceAllIn(text, m => s"${m.group(1)}####${m.group(2)}")
    }

    /**
     * 读取文件内容并处理手机号脱敏,然后写入新文件
     * @param sourcePath 源文件路径
     * @param targetPath 目标文件路径
     */
    def processFile(sourcePath: String, targetPath: String): Unit = {
      try {
        // 读取源文件内容
        val sourceContent = Source.fromFile(sourcePath).mkString
        // 处理手机号脱敏
        val maskedContent = maskPhoneNumbers(sourceContent)
        // 写入目标文件
        val writer = new PrintWriter(new File(targetPath))
        writer.write(maskedContent)
        writer.close()
        println(s"文件处理完成!脱敏后的文件已保存至:$targetPath")
      } catch {
        case e: Exception => println(s"文件处理失败:${e.getMessage}")
      }
    }

    // 程序入口
    def main(args: Array[String]): Unit = {
      // 配置源文件和目标文件路径(请替换为你实际的文件路径)
      val sourceFile = "input.txt"   // 源文件(包含原始文本)
      val targetFile = "output.txt"  // 目标文件(保存脱敏后的文本)

      // 执行文件处理
      processFile(sourceFile, targetFile)
    }

}

image.png