删除Java String变量的最后一个字符

时间:2012-02-03 07:40:12

标签: java string

值为

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

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

6 个答案:

答案 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中工作。