值为
的java String变量String path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf.null"
我想删除最后四个字符,即.null
。我可以使用哪种方法进行拆分。
答案 0 :(得分:127)
我想你要删除最后的五个字符('。','n','u','l','l'):
path = path.substring(0, path.length() - 5);
注意你需要如何使用返回值 - 字符串是不可变的,因此substring
(和其他方法)不会更改现有字符串 - 它们返回对 new 的引用带有适当数据的字符串。
或者更安全一点:
if (path.endsWith(".null")) {
path = path.substring(0, path.length() - 5);
}
但是,我会尝试更高层次地解决这个问题。我的猜测是你只得到了“.null”,因为其他一些代码正在做这样的事情:
path = name + "." + extension;
其中extension
为空。相反,我会以此为条件,所以你永远不会得到错误的数据。
(如问题评论中所述,你真的应该浏览一下String
API。它是Java中最常用的类之一,所以没有理由不熟悉它。)
答案 1 :(得分:30)
import org.apache.commons.lang3.StringUtils;
// path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf.null"
StringUtils.removeEnd(path, ".null");
// path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf"
答案 2 :(得分:7)
path = path.substring(0, path.length() - 5);
答案 3 :(得分:5)
我很惊讶地看到所有其他答案(截至2013年9月8日)要么计算子字符串".null"
中的字符数,要么如果找不到子字符串则抛出StringIndexOutOfBoundsException
。或两者:(
我建议如下:
public class Main {
public static void main(String[] args) {
String path = "file.txt";
String extension = ".doc";
int position = path.lastIndexOf(extension);
if (position!=-1)
path = path.substring(0, position);
else
System.out.println("Extension: "+extension+" not found");
System.out.println("Result: "+path);
}
}
如果找不到子串,则没有任何事情发生,因为没有什么可以切断的。你不会得到StringIndexOutOfBoundsException
。此外,您不必在子字符串中自己计算字符数。
答案 4 :(得分:3)
如果您想删除最后5个字符,可以使用:
path.substring(0,path.length() - 5)
(可能包含一个错误;))
如果你想删除一些变量字符串:
path.substring(0,path.lastIndexOf('yoursubstringtoremove));
(也可能包含一个错误;))
答案 5 :(得分:0)
另一种方式:
if (s.size > 5) s.reverse.substring(5).reverse
顺便说一下,这是Scala代码。可能需要括号才能在Java中工作。