Java 替换字符串的结尾

Java 替换字符串的结尾,java,string,replace,Java,String,Replace,我有一个路径名,它是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);

我有一个路径名,它是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

请告知


谢谢

你的假设一定是错的,我测试了这段代码

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

使用此选项,即使名称为.XML或.XML:)也可以使用


对于replace with ignore case with regx,请尝试如下操作:

public static void main(String[] args) throws Exception {
    String files = "123456.XML";
    String pdfName = files.replaceAll("(?i)xml", "pdf");
    System.out.println(pdfName);
}

对于您在问题中发布的示例代码,您应按以下方式进行更改:

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”

是否正在尝试将文件从
.xml
转换为
.pdf
?或者只是重命名?这只是一个重命名,我在一个基于XML/XML文件的数据库中找到了一个PDF(PDF的文件名是just.PDF而不是.XML)。hells bells,XML文件是XML或XML。你们知道用替换忽略这个案例吗?我更新了这个问题。@user1857654被编辑为包含一个将忽略大小写的示例。您可以使用
String.replaceAll
,因为它接受搜索字符串的正则表达式。您可以很容易地制定正则表达式,以不区分大小写的方式替换它-
String pdfName = files.replace(".xml",".pdf").replace(".XML",".pdf")
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);
}