Java 替换字符串的结尾
我有一个路径名,它是xml,我试图用.pdf替换它 我试着这样做: “files”是一个字符串,例如它的值是123456.xml或123456.xmlJava 替换字符串的结尾,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);
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);
}