Явная переменная String, значение которой
String path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf.null"
Я хочу удалить последние четыре символа, т.е. .null
. Какой метод я могу использовать для разделения.
Явная переменная String, значение которой
String path = "http://cdn.gs.com/new/downloads/Q22010MVR_PressRelease.pdf.null"
Я хочу удалить последние четыре символа, т.е. .null
. Какой метод я могу использовать для разделения.
Я думаю, вы хотите удалить последние пять символов ('.', '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, поэтому нет оправдания тому, что вы не знакомы с ним.)
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);
Я удивлен, увидев, что все остальные ответы (по состоянию на 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 символов, вы можете использовать:
path.substring(0,path.length() - 5)
(может содержать одну ошибку;))
Если вам нравится удалять переменную строку:
path.substring(0,path.lastIndexOf('yoursubstringtoremove));
(также может содержать одну ошибку;))
Другой способ:
if (s.size > 5) s.reverse.substring(5).reverse
Кстати, это код Scala. Может потребоваться скобки для работы на Java.