正则表达式案例及解析

112 阅读1分钟

案例问题:

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

第一步:在根目录下创建一个文本文件address.txt

小花,xxx 盛世城3303号,13617234567

第二步:写代码

package reg

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

 */


object reg04 {
  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()
  }
}

第三步:运行代码,保存新文件address_new.txt

image.png

小花,xxx 盛世城3303号,136****4567