zoukankan      html  css  js  c++  java
  • 项目中遇到的一些迭代解析问题

    1. // 迭代删除 ()...()...()

    def parseTail(sqlContext: String): String = {
    
      val pre = sqlContext.indexOf("(")
      val end = sqlContext.indexOf(")")
    
      if(pre == -1 && end == -1)
        return sqlContext
    
      parseTail(sqlContext.substring(0, pre) + sqlContext.substring(end + 1))
    }
    
    parseTail(sql)
    

      

    2. // 迭代删除 (..(..)..).. (..)  n重嵌套结构

    // 迭代计算 ( 个数
    def parseIndexNum(s: String): Int = {
      if (s.indexOf("(") > s.indexOf(")") || s.indexOf("(") == -1) return 0
      return parseIndexNum(s.substring(s.indexOf("(") + 1)) + 1
    }
    
    
    // 迭代删除 ()...()...()
    def parseTail(sqlContext: String): String = {
    
      val pre = sqlContext.indexOf("(")
      var end = sqlContext.indexOf(")")
    
      if (pre == -1 || end == -1)
        return sqlContext
    
      var sqlCopy = sqlContext
      val pre_count = parseIndexNum(sqlContext)
    
      if (pre_count > 1) {
        (0 until pre_count - 1).foreach(_ => {
          val index = sqlCopy.indexOf(")")
          sqlCopy = sqlCopy.substring(0, index) + "w" + sqlCopy.substring(index + 1)
        })
        end = sqlCopy.indexOf(")")
      }
      parseTail(sqlContext.substring(0, pre) + sqlContext.substring(end + 1))
    
    }
    

      

  • 相关阅读:
    pycharm使用技巧
    for 循环
    面向对象进阶
    python实现socket上传下载文件-进度条显示
    python实现进度条--主要用在上传下载文件
    django下常用查询的API
    django下model.py模型的定义
    django下数据库配置
    ORM机制简介
    views.py文件详解
  • 原文地址:https://www.cnblogs.com/ruili07/p/10964401.html
Copyright © 2011-2022 走看看