2013-03-10 69 views
0

我在下面获取文件名如name。我想删除最终的IP和另一个数字值,最终得到真正的文件名。有没有比使用正则表达式更好的方法?也许还有其他一些技巧请帮助我知道这一点。在Java中创建临时文件时如何删除ip和其他数值

 String name = "pdf_of_filename_127.10.10.0_8726347.xls"; 

     System.out.println("Initial File Name :"+name); 

     String [] t = name.split("_"); 
     String finalpart = t[t.length - 1]; 
     String extension = finalpart.substring(finalpart.lastIndexOf("."),finalpart.length()); 

     String finalName = ""; 

     for(int i = 0;i < t.length - 2;i++) 
      finalName += t[i]+"_"; 
     finalName = finalName.substring(0,finalName.length() - 1); 

     System.out.println("Final File Name :"+finalName+extension); 

输出:

Initial File Name :pdf_of_filename_127.10.10.0_8726347.xls 

Final File Name :pdf_of_filename.xls 

更多的了解:

String name = "pdf_of_filename_53613785621.183761237_127.10.10.0_8726347.xls"; 

output Expected: 
Final File Name :pdf_of_filename_53613785621.183761237.xls 

回答

3

这会工作:

String name = "pdf_of_filename_53613785621.183761237_127.10.10.0_8726347.xls"; 
String finalName = name.replaceAll("_(\\d+\\.){3}[\\d_]+",""); 
System.out.println("finalName = " + finalName); 

从而消除一个子,看起来像:

_    an underscore 
(\\d+\\.){3} followed by 3 times a digit and a period (127.10.10.) 
[\\d_]+  then some digits and underscores (0_876347) 
+0

感谢您的回复,但如果文件名有其他“。”和数值这些东西也删除,如果我使用你的代码,请帮助我。初始文件名:pdf_of_filename_53613785621.183761237_127.10.10.0_8726347.xls 最终文件名:pdf_of_filename_53613785621.183761237.xls finalName = pdf_of_filename.xls – sunleo 2013-03-10 13:20:41

+0

@sunleo我编辑了我的答案。 – assylias 2013-03-10 13:23:03

+0

请检查问题更新。 – sunleo 2013-03-10 13:23:45

2

如何在问题有关

name = name.replaceAll("_[\\d._]+\\.","."); 

编辑新的要求

尝试:

name = name.replaceAll("_\\d{1,3}\.[\\d._]+\\.","."); 
+0

+1好和短。 – assylias 2013-03-10 13:20:01

+0

@sunleo查看更新 – Kent 2013-03-10 13:29:02

1

安全正则表达式验证一个以IP结尾的文件名,任何和文件的位数延长3至4个字母长:

^(.*)_[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}\.[12]?\d{1,2}_\d+\.([a-z]{3,4})$ 

替换:\1.\2
解释演示:http://regex101.com/r/tE3iB8

短:^(.*)_([12]?\d{1,2}\.){3}[12]?\d{1,2}_\d+\.([a-z]{3,4})$
替换为:\1.\3
解释演示:http://regex101.com/r/rM6mD8

相关问题