У меня есть функция shortenDisplay (String longDisplay, String display), которая обрезает отображение методом substring(). Однако, если отображаемый на этом методе длиннее, чем ожидалось, метод подстроки будет указывать на отрицательный индекс и вызывать исключение StringIndexOutOfBoundsException. Мне нужен способ обойти это, я хочу сделать код более чистым и эффективным, чтобы он мог обрабатывать более длинные имена строк. Любая помощь будет оценена по достоинству. Заранее спасибо. Вот мой код -Подстановка() throws StringIndexOutOfBoundsException в Java
private String shortenDisplay(String longDisplay, String display) {
final int displayLength = display.length();
final int totalLength = longDisplay.length();
final int numberOfCharsToRemove = totalLength - 36;
final int stop = displayLength - numberOfCharsToRemove;
final String beginning = longDisplay.substring(0, stop); //this line throws an error
final int endStart = stop + numberOfCharsToRemove;
final String end = longDisplay.substring(endStart);
String shortenedDisplay = beginning + end;
return shortenedDisplay;
}
Так, например, если параметры, передаваемые в это -
longDisplay - «Эй, это отображаемое имя строка с очень большой длиной !!!!!!!! " (64 символов)
дисплей - "Эй, меня зовут струна" (21 символов)
В соответствии с 3-й строке кода в функции shortenDisplay:
INT numberOfCharsToRemove: 64 - 36 = 28 символов
ИНТ остановка: 21 - 28 = -7 // Отрицательный индекс
Существует конкретная причина для существующего кода (требования), поэтому логика кода должна оставаться прежней, но есть ли способ обойти этот отрицательный индекс и избежать IndexOutOfBoundsException?
Что именно ** является вашим требованием **, то есть каким должен выглядеть результат метода на основе ввода? – Baz
Требование не имеет смысла. Зачем вам потребовалось бы сократить строку на 36, если это будет меньше, чем это нужно? Вы можете проверить, что numberOfCharactersToRemove слишком велик, но тогда что вы делаете? Вернуть пустую строку? Кажется странным. – swingMan
В конечном итоге метод должен иметь возможность обрабатывать более длинное число символов, например, более 100 символов длины String, но в соответствии с текущей логикой отрицательный индекс передается в метод substring(), есть ли способ обработать эту логику кода более эффективным способом? – user3652212