6 ответов:
Я думаю, что вы хотите удалить последний пять символы ('.', '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. Я бы условно это вместо этого, так что вы никогда не получите плохие данные в первую очередь.(как отмечено в комментарии к вопросу, вы действительно должны посмотреть через
StringAPI. Это один из наиболее часто используемых классов в 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"
Я удивлен, что все остальные ответы (по состоянию на 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. Кроме того, вам не нужно самостоятельно подсчитывать символы в подстроке.
Если вы хотите удалить последние 5 символов, вы можете использовать:
path.substring(0,path.length() - 5)( может содержать от одной ошибки ;) )
Если вы хотите удалить некоторую переменную строку:
path.substring(0,path.lastIndexOf('yoursubstringtoremove));(также может содержать одну ошибку;))
иначе:
if (s.size > 5) s.reverse.substring(5).reverseкстати, это код Scala. Может потребоваться скобки для работы в Java.
Comments