替换前字符串:AB?D?F {参数:C、E}替换后字符串:ABCDF

来源:互联网 发布:网络调研平台 编辑:程序博客网 时间:2024/06/07 03:54

 /**
  * 将以特殊符号为分隔的字符串分割,去除特殊符号,并加入集合
  * 目前只支持去除";",如原字符为"001;002;003",则返回的集合元素为:[001],[002],[003]
  *
  * @param sourceStr
  * @return Collection
  */
 public static Collection filterStringWithSpeciaCharacterToCollection(
   String sourceStr) {
  Collection target = new ArrayList();
  if (isNullOrBlank(sourceStr))
   return target;
  String tempStr = null;
  int begin = 0;
  int end = sourceStr.length();
  while (sourceStr.indexOf(";", begin) != -1) {
   tempStr = sourceStr.substring(begin, sourceStr.indexOf(";", begin));
   target.add(tempStr);
   begin = sourceStr.indexOf(";", begin) + 1;
  }

  return target;
 }

 

===================================================================

 /**
  * 获得执行SQL
  *
  * @param monitorJobsDTO
  * @return
  */
 private String getExecSql(MonitorJobsDTO monitorJobsDTO) {
  // 获得执行SQL变量值
  String execSqlVar = monitorJobsDTO.getExecSqlVar();
  // 获得执行SQL
  String execResultSql = monitorJobsDTO.getExecResultSql();

  // 判断执行SQL变量值是否为空,如果不为空则
  if (StrUtil.isNotEmpty(execSqlVar)) {
   // 获得参数集合
   Collection collection = StrUtil
     .filterStringWithSpeciaCharacterToCollection(execSqlVar);
   // 将参数集合转化为数组
   Object[] objArr = collection.toArray();
   for (int i = 0; i < objArr.length; i++) {
    Object object = objArr[i];
    // 查看执行sql中是否包含?符号
    if (execResultSql.contains("?")) {
     // 填充执行SQL中的参数?
     execResultSql = execResultSql.replaceFirst("\\?",
       object.toString());
    }
   }
  }
  return execResultSql;
 }

  

0 0
原创粉丝点击