因项目需要,对内部信息化系统进行前端文件的归档,CSS文件归档,伴随着图像URL的变化,因系统中CSS中含url:(../UI/images/excel.jpg)之类的相对路径。
故此需要对此类情况进行替换,在该功能中有三个已知的参数:
1、原CSS的绝对路径
2、CSS文件中背景图像的URL
3、CSS归档后的绝对路径
代码如下:
/******************************************************************************* * $Header$ * $Revision$ * $Date$ * *============================================================================== * * Copyright (c) 2001-2006 Primeton Technologies, Ltd. * All rights reserved. * * Created on 2015-2-9 *******************************************************************************/ package org.gocom.bpm.platform.test; /** * * * 2015-2-9 上午09:07:35 */ public class ImagePathMatch { public static void main(String[] args) { String src = "/eos-default/UI/style/commons.css"; String image = "../images/null.gif" ; String dest = "/eos-default/UI/archive/UI/style/commons.css"; /* * 1、获取图像的绝对路径 * 2、比较源路径和目的路径的层次 * 3、得出最后的图像的相对路径 */ String[] arrSrc = src.split("/"); String[] arrImage = image.split("/"); int i=arrSrc.length,j=arrImage.length; int p = 0,q=1; StringBuilder sb = new StringBuilder(128); sb.append("/"); for(int k=0;k<j;k++){ if(arrImage[k].equals("..")){ p+=1 ; } } while((q+p*2)<i){ sb.append(arrSrc[q++]).append("/"); } while(p<j){ sb.append(arrImage[p++]); if(p<j) sb.append("/"); } System.out.println(sb.toString()); String midPath = sb.toString() ; sb.delete(0, sb.length()); String[] arrMid = midPath.split("/"); String[] arrDest = dest.split("/"); boolean flag = true ; q =0 ; while(flag){ if(arrMid[q].equals(arrDest[q])) q ++ ; else flag = false; } p = arrDest.length ; int s = q ; while(q<p){ sb.append("..").append("/"); q ++ ; } p = arrMid.length; s = s-1 ; while(s<p){ sb.append(arrMid[s++]); if(s < p) sb.append("/"); } System.out.println(sb.toString()); } }