Scala正则表达式应用-手机号打码

15 阅读1分钟

功能:对目标字符中的内容,进行正则查找,对找到的内容使用指定的内容进行替换,并返回替换之后的字符串

案例:

scss
 体验AI代码助手
 代码解读
复制代码
package reg

import java.io.FileWriter

object reg04 {
  def main(args: Array[String]): Unit = {
    // 1.从根目录下读出address.txt的内容
    val content = scala.io.Source.fromFile("address.txt").mkString

    println("读取到文件的内容如下")
    println(content)
    // 2.找到其中合法的手机号,把中间4位(3-4-4)用*代替
//    val reg = "1[356789]\d{9}".r
    val reg = "(1[356789]\d\d)(\d{4})(\d{3})".r
//    println("找到合法的手机号如下:")
//    reg.findAllIn(content).foreach(ele => println(ele))
  // 在content中,把所有通过正则找到的内容,换成"abc"
    val newContent = reg.replaceAllIn(content, ele =>{
      println(ele.group(0))
      println(ele.group(1))
      println(ele.group(2))
      println(ele.group(3))
//      println(ele.toString())

//      "手机号前3位" + "****"+ "手机号后4位"
//      phone.substring(0,3) + "****" + phone.substring(7)
      ele.group(1) + "-****-"  + ele.group(3)
    })
    println("替换后的内容如下:")
    println(newContent)
    // 3.把结果写入到address_new.txt文件中
    val fileWriter = new FileWriter("address_new.txt")
    fileWriter.write(newContent)
    fileWriter.close()
  }
}

address.txt的内容

image.png

结果

image.png

address_new.txt的内容

image.png