Ответ 1
Вы можете сделать то, что хотите, с помощью String.substring()
.
String str = "please truncate me after 13 characters!";
if (str.length() > 16)
str = str.substring(0, 13) + "..."
Есть ли что-то вроде подстроки С# для Java? Я создаю мобильное приложение для устройства Blackberry, и из-за ограничений экрана я могу позволить себе показывать только 13 букв плюс три точки для многоточия.
Любое предложение о том, как это сделать?
Мне нужны голые кости Java, а не какой-то причудливый трюк, потому что я сомневаюсь, что мобильное устройство имеет доступ к полной структуре. По крайней мере, по моему опыту работы с Java ME год назад.
Вы можете сделать то, что хотите, с помощью String.substring()
.
String str = "please truncate me after 13 characters!";
if (str.length() > 16)
str = str.substring(0, 13) + "..."
String foo = someString.substring(0, Math.min(13, someString.length()));
Изменить: Только для общей ссылки, с Guava 16.0 вы можете сделать:
String truncated = Ascii.truncate(string, 16, "...");
для усечения с максимальной длиной 16 символов с помощью многоточия.
Помимо
Обратите внимание, что усечение строки для отображения символом не является хорошей системой для чего-либо, где i18n может потребоваться рассмотреть. Есть (по крайней мере) несколько разных проблем:
e
, за которым следует комбинирующий символ, который помещает акцент на e
).По этим причинам (и другим), я понимаю, что наилучшей практикой для усечения для отображения в пользовательском интерфейсе является фактическое исчезновение рендеринга текста в правильной точке на экране, а не обрезание базовой строки.
Всякий раз, когда есть какая-то операция, которую вы считаете самой распространенной задачей, но Java API требует, чтобы вы проверяли границы, исключали исключения, использовали Math.min()
и т.д. (т.е. требуют больше работы, чем вы ожидали), проверьте Apache commons-lang. Он почти всегда присутствует в более сжатом формате. В этом случае вы используете StringUtils#substring
, который выполняет обработку ошибок. Вот что говорит javadoc:
Gets a substring from the specified String avoiding exceptions.
A negative start position can be used to start n characters from the end of the String.
A null String will return null. An empty ("") String will return "".
StringUtils.substring(null, *) = null
StringUtils.substring("", *) = ""
StringUtils.substring("abc", 0) = "abc"
StringUtils.substring("abc", 2) = "c"
StringUtils.substring("abc", 4) = ""
StringUtils.substring("abc", -2) = "bc"
StringUtils.substring("abc", -4) = "abc"
String str = "This is Mobile application."
System.out.println(str.subSequence(0, 13)+"...");