删除Java Stringvariables的最后一个字符

一个javastringvariables,其值是

String path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf.null" 

我想删除最后四个字符,即.null 。 我可以使用哪种方法来拆分。

我想你想删除最后五个字符('。','n','u','l','l'):

 path = path.substring(0, path.length() - 5); 

注意你需要如何使用返回值 – string是不可变的,所以substring (和其他方法)不会改变现有的string – 它们返回一个具有适当数据的string的引用。

或者要更安全些:

 if (path.endsWith(".null")) { path = path.substring(0, path.length() - 5); } 

不过,我会尽力解决更高的问题。 我的猜测是你只有“.null”,因为其他的代码是这样做的:

 path = name + "." + extension; 

其中extension null。 我会有条件的,所以你永远不会得到不好的数据。

(正如在一个问题评论中指出的那样,你真的应该看看String API ,它是Java中最常用的类之一,所以没有理由不去理解它)。

 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" 
 path = path.substring(0, path.length() - 5); 

我惊讶地发现,所有其他答案(截至2013年9月8日)要么计算子string".null"的字符数,要么在未find子string时抛出StringIndexOutOfBoundsException 。 或两者 :(

我build议如下:

 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); } } 

如果没有find子string,则什么都不会发生,因为没有任何东西可以切断。 你不会得到StringIndexOutOfBoundsException 。 此外,您不必在子string中自己计算字符。

如果你想删除最后5个字符,你可以使用:

 path.substring(0,path.length() - 5) 

(可能包含一个错误;))

如果你想删除一些variablesstring:

 path.substring(0,path.lastIndexOf('yoursubstringtoremove)); 

(也可能包含一个错误;))

其他方式:

 if (s.size > 5) s.reverse.substring(5).reverse 

顺便说一下,这是Scala代码。 可能需要括号才能在Java中工作。