Удалить последние символы переменной Java String - PullRequest
56 голосов
/ 03 февраля 2012

Строковая переменная Java, значение которой

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

Я хочу удалить последние четыре символа, т.е. .null. Какой метод я могу использовать для разделения.

Ответы [ 6 ]

128 голосов
/ 03 февраля 2012

Я думаю, что вы хотите удалить последние пять символов ('.', '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, поэтому нет никаких оправданий тому, что он не знаком с ним.)

30 голосов
/ 09 октября 2013
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"
7 голосов
/ 03 февраля 2012
path = path.substring(0, path.length() - 5);
5 голосов
/ 08 сентября 2013

Я удивлен, увидев, что все другие ответы (по состоянию на 8 сентября 2013 г.) включают подсчет количества символов в подстроке ".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. Также вам не нужно самостоятельно считать символы в подстроке.

3 голосов
/ 03 февраля 2012

Если вы хотите удалить последние 5 символов, вы можете использовать:

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

(может содержать off из-за одной ошибки;))

Если вы хотите удалить некоторую переменную строку:

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

(может также содержать off на одну ошибку;))

0 голосов
/ 05 августа 2015

Другой способ:

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

Кстати, это код Scala.Может потребоваться скобки для работы в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...