Подтвердить что ты не робот

Удалите последние символы переменной Java String

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

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

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

4b9b3361

Ответ 1

Я думаю, вы хотите удалить последние пять символов ('.', 'n', 'u', 'l', 'l'):

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

Обратите внимание, как вам нужно использовать возвращаемое значение. Строки неизменяемы, поэтому substring (и другие методы) не меняют существующую строку - они возвращают ссылку на новую строку с соответствующими данными.

Или быть немного безопаснее:

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

Однако я постараюсь решить проблему выше. Я предполагаю, что у вас есть только ".null", потому что какой-то другой код делает что-то вроде этого:

path = name + "." + extension;

где extension равно null. Я бы предпочел бы, что вместо этого вы никогда не получите плохие данные.

(Как отмечено в вопросительном комментарии, вам действительно нужно посмотреть String API. Это один из наиболее часто используемых классов на Java, поэтому нет оправдания тому, что вы не знакомы с ним.)

Ответ 2

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"

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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

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

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

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

Ответ 6

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

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

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