list[2]= a.js  b.css
svn =  1001
html= ..... ....a.js?r=1000,.....b.css?r=998....
(1000和988是不确定的整型版本号)
替换后html   ..... ....a.js?r=1001,.....b.css?r=1001....这个替换的正则如何写?
可参考代码:
/**
 * 替换内容
 * 
 * @param infilename
 * @param from
 * @param to
 * @throws IOException
 */
// listFiles 是arraylist,别人返回给我的一些以.css .js结尾的文件名的数组。
// svnVersion是可以拿到的版本号。

public static void replace(String infilename)
throws IOException {
File infile = new File(infilename);
BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream(infile)));
String reading = null;
File tempFile = new File(infilename + "1");
BufferedWriter bw = new BufferedWriter(new FileWriter(tempFile));
while ((reading = in.readLine()) != null) {
for (int i = 0; i < listFiles.length; i++) {
if (reading.contains(listFiles[i])) {
reading = reading.replaceAll(regex, listFiles[i]+"?r="+svnVersion);
}
}

bw.write(reading + "\n");
}
in.close();
bw.close();
tempFile.renameTo(new File(infilename));
tempFile.delete();
}

解决方案 »

  1.   


    var a=['asdrss231.js?r=123','sdfsh23.js','sdfs.js.js','http//13sd.sd.fd.js'],
        reg=/(.+)(.js|.css)(\?r=\d+)*$/,
        verson='1001';
    for(var i=0,il=a.length;i<il;i++){
        alert(a[i]+'-->'+a[i].replace(reg,'$1$2'+'?r='+verson));
    }
      

  2.   

    public static void main(String[] args){
    String svn="1001";
    String test="html= ..... ....a.js?r=1000,.....b.css?r=998....";
    String reg="(?<=\\?r\\=)\\d+";
    test=test.replaceAll(reg, svn);
    System.out.println(test);
    }
    这样试试  不很明白你的意思
      

  3.   

    Regex reg1 = new Regex(@"(?<=a\.js\?r\=)\d+");
    Regex reg2 = new Regex(@"(?<=b\.css\?r\=)\d+");
    reg1.Replace(html, 1001);
    reg2.Replace(html, 1001);
      

  4.   

    楼上的人写的都不对啊,我要用最新的在源html文件里面以.js .css 文件末尾加上版本号。源html文件里面的.js .css 文件如果原先有版本号,则替换,如果原先没有,则添加。