s = s.substring(0, Math.min(s.length(), 10));
Korzystanie Math.min
takiego unika wyjątek w przypadku, gdy łańcuch jest już krótszy niż 10
.
Uwagi:
Powyższy robi prawdziwą przycinania. Jeśli chcesz zastąpić ostatnie trzy znaki (!) Kropkami, jeśli je skróci, użyj Apache Commons StringUtils.abbreviate
.
To może zachowywać się niepoprawnie , jeśli Twój ciąg zawiera punkty kodowe Unicode poza BMP; na przykład Emoji. Aby znaleźć rozwiązanie, które działa poprawnie dla wszystkich punktów kodu Unicode, zobacz @ sibnick's solution.
1 - kodowy Unicode nie ma na płaszczyźnie 0 (BMP) są reprezentowane jako "zastępczy pary" (to znaczy dwa char
wartości) w String
. Ignorując to, możemy przyciąć do mniej niż 10 punktów kodowych lub (gorzej) uciąć w środku pary zastępczej. Z drugiej strony, String.length()
nie jest już idealną miarą długości tekstu Unicode, więc przycinanie na tej podstawie może być niewłaściwe.
możliwy duplikat [do pierwszych N znaków] (http://stackoverflow.com/questions/1583940/up-to-first-n-characters) –