标签:
因项目需要,对内部信息化系统进行前端文件的归档,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());
}
}
标签:
原文地址:http://www.cnblogs.com/xinzhuangzi/p/4282230.html