替换字符串的结尾

时间:2014-02-27 15:38:00

标签: 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);
            XMLobj.Process(files, derp);
}

当我打印pdfname时,它仍然是123456.xml

我试图把它变成123456.pdf

请告知。

谢谢!

5 个答案:

答案 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"