2014-02-12 3 views
2

Если у меня есть строка:Java встроенный метод/стратегия для усечения строки?

String neatish = getTheString(); // returns "...neat..."

Я знаю, что я могу избавиться от первого многоточия с помощью:

getTheString().substring(3);

Но мне интересно, если есть аналогичный один- который принимает конец выключен, на основе длина? Как:

getTheString().substring(3).truncate(3);

Я не хочу, метод символьного специфичностью, т.е.. который работает только на эллипсах.

В то время как есть substring(), который принимает два параметра, для того, чтобы определить длину, необходимо сначала изменить переменную String на переменную. (Или же вы можете позвонить getTheString() дважды.)

Я могу, конечно, написать один, но мне интересно, если есть метод Одностроковые либо в стандартный java.lang пакет, или в Apache Commons-Lang, что выполнит это.

Я нахожусь на 50% любопытным и 50% избегаю повторного изобретения колеса.

Update: Чтобы избежать путаницы, я не хочу:

String neatish = getTheString(); 
neatish = neatish.substring(3)...; 

Я вместо этого ищет серверную версию substring(), и интересно, почему там не один.

+0

Длина '' somestring '.substring (3) 'обычно' 'somestring" .length() - 3' – njzk2

+0

Я что-то упустил или вам просто не нужно 'neatish = neatish.replaceAll (" \ \. \\. \\."," ");?? –

+0

@BrianRoach Мне не нужен шаблон с многоточием, просто общий метод, основанный на длине. –

ответ

1

Вы можете использовать subStringBefore and subStringAfter from Commons:

StringUtils.subStringAfter(StringUtils.subStringBefore(getTheString(), "..."), "..."); 

EDIT на основе длины:

Понадобится: StringUtils.html#substring(java.lang.String, int, int)

StringUtils.substring(getTheString(), 3, -3); 
+0

Не ищут метод, специфичный для многоточия, - хотя бы один, основанный на длине. –

+0

Ах, мое плохое. Извините, –

+1

См. Мой обновленный ответ –

0
getTheString().substring(3).replaceFirst("(?s)...$", ""); 
getTheString().replaceFirst("(?s)^...(.*)...$", "$1"); 

Это удаляет последние 3 символов регулярного выражения, где (?s) сделать . также соответствовать новой строке. Используйте \\., чтобы соответствовать периоду. UGLY.

+0

Да UGLIEST ......................... и самый медленный – AlexWien

0

Вы можете написать способ для этого.

public static String trimChar(String s, char ch) { 
    int start = 0; 
    for(; start < s.length(); start++) 
     if (s.charAt(start) != ch) 
      break; 
    int end = s.length(); 
    for(; end > start; end--) 
     if (s.charAt(end-1) != ch) 
      break; 
    return s.substring(start, end); 
} 


String s = trimChar(getTheString(), '.'); 
2

Fun упражнения

String theString = new StringBuilder(getTheString()).delete(0, 3).reverse().delete(0, 3).reverse().toString(); 

Получить String в StringBuilder, удалить первые 3 символов, обратное его, удалить последние 3 символов (которые в настоящее время в начале), обратный его снова.

+0

Я думаю, К.К. вы победили. :) Но это довольно творческий ответ. –

Смежные вопросы