在Java中创建临时文件时如何删除ip和其他数值
问题描述:
我在下面获取文件名如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
答
这会工作:
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)
答
安全正则表达式验证一个以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
感谢您的回复,但如果文件名有其他“。”和数值这些东西也删除,如果我使用你的代码,请帮助我。初始文件名: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
@sunleo我编辑了我的答案。 – assylias 2013-03-10 13:23:03
请检查问题更新。 – sunleo 2013-03-10 13:23:45