我有一个xml的路径名,我试图用.pdf替换它。
我想这样做:
“files”是一个字符串,例如它的值是123456.xml或123456.XML
else if(files.endsWith(".XML") || files.endsWith(".xml")){
String pdfName = files.replace(".xml", ".pdf");
derp = db.getDerpyName(pdfName);
XMLobj.Process(files, derp);
}
当我打印pdfname时,它仍然是123456.xml
我试图把它变成123456.pdf
请告知。
谢谢!
答案 0 :(得分:5)
你的假设一定是错的,我测试了这段代码
public static void main(String[] args) throws Exception {
String files = "123456.xml";
String pdfName = files.replace(".xml", ".pdf");
System.out.println(pdfName);
}
输出
123456.pdf
修改强> 根据您的评论要求不区分大小写,您可以 -
public static void main(String[] args) throws Exception {
String files = "123456.XML";
int index = files.toLowerCase().indexOf(".xml");
String pdfName;
if (index > -1) {
pdfName = files.substring(0, index) + ".pdf";
} else {
pdfName = files + ".pdf";
}
System.out.println(pdfName);
}
哪个也会输出
123456.pdf
答案 1 :(得分:3)
使用此功能即使名称为.XML或.xml:)
也可以使用 files.replaceAll("(?i)\.xml", ".pdf");
答案 2 :(得分:1)
尝试使用正则表达式替换为忽略大小写
public static void main(String[] args) throws Exception {
String files = "123456.XML";
String pdfName = files.replaceAll("(?i)xml", "pdf");
System.out.println(pdfName);
}
答案 3 :(得分:1)
String pdfName = files.replace(".xml",".pdf").replace(".XML",".pdf")
答案 4 :(得分:0)
对于您在问题中发布的示例代码,您应该按如下方式进行更改:
else if(files.toLowerCase().endsWith(".xml")){
// ^ checks every possibility such as ".XML", ".xMl", ".Xml", and so on
String pdfName = files.replaceAll("(?i)\.xml", ".pdf");
// ^ as per other answers, replaces case-insensitive
derp = db.getDerpyName(pdfName);
XMLobj.Process(files, derp);
}
这可能会导致在My.xml.file.xml
这样的文件名中进行不必要的替换,这将成为My.pdf.file.pdf
。
如果您需要避免这种情况而只需要My.xml.file.pdf
,则可以使用以下正则表达式:"(?i)\.xml$"
或"(?i)\.xml\Z"