2012-03-20 4 views
4

현재 자바에서 ArrayList 개의 문자열이 있지만 각 문자열의 문자 수를 20 자로 자르거나 제한하려고합니다. 그렇게 할 방법을 찾을 수 없습니다.Java에서 ArrayList의 요소로 저장된 문자열에서 char 크기를 제한하는 방법은 무엇입니까?

예 :

"hello this is one of the descriptions in an array list, please limit me to 20" 

이 될해야합니다

"hello this is one of" 
+0

이 질문에는 실제로 정규 표현식이 포함되지 않는다고 생각합니다. 이 태그를 태그로 지정 하시겠습니까? –

+0

문자 점수 단위가 아닌 코드 점수를 사용하는 것을 잊지 마십시오! – tchrist

+0

@hovercarft가 regex 태그를 삭제했습니다. 고맙습니다. – OverAir

답변

3

몇 가지 가능한 방법 :

  • ArrayList를 확장하고 add(...) 방법을 우선합니다. 나는 이것을 좋아하지 않는다.
  • ArrayList를 감싸고 해당 내용을 추가하거나 수정하는 공용 메서드에서 문자 수를 제한하십시오. 이 아이디어는 훨씬 더 마음에 듭니다!
  • 편집 : 또는 ArrayList<String>가 아니라 ArrayList<MyCustomClass>이 필요합니다. MyCustomClass의 생성자 또는 설정자 메서드는 필요에 따라 String을 자릅니다. 나는이 것도 좋아한다!
+1

옵션 1보다 옵션 2를 선호하는 이유는 무엇입니까? – rayd09

+2

왜냐하면 나는 상속 이상의 구성을 선호하는 경향이 있기 때문입니다. 예를 들어 ArrayList가 MVC 유형 디자인 구조의 모델 클래스에 대한 핵이라면 내 모델 설정 메소드에서 ArrayList에 추가하기 전에 String을 자릅니다. 래퍼 클래스 (여기서는 모델 자체)는 잘라내기를 알 필요가있는 유일한 클래스이며이를 처리하는 코드가 있습니다. 모델이 ArrayList의 모든 메소드를 노출해야 할 가능성은 매우 낮으므로 클래스가 ArrayList를 확장 할 필요가 없습니다. –

+0

@ rayd09와 (과) 같은 질문 내가 뭘 하려는지 이해하지만이 문맥에서 왜 옵션 2가 더 나은지 ... 아니면 그냥 좋아하는 것 같은데 ... :)? – havexz

0

String.substring()을 사용하면됩니다. 예 : 문자열을 추가하는 방법에

String str = "hello this is one of the descriptions in an array list, please limit me to 20"; 
String str20 = str.substring(0, 20); 
2

:

public void addString(String str) { 
    String truncated = str != null ? str.substring(0, 20) : null; 
    strings.add(truncated); 
} 
0

이 가정 변경하려는 기존의 목록 :

public static void truncate20(List<String> strs) { 
    for (ListIterator<String> iter = strs.listIterator(); iter.hasNext();) { 
     String str = iter.next(); 
     if (str.length() > 20) { 
      iter.set(str.substring(0, 20)); 
     } 
    } 
} 

는 새 목록을 만들기에 충분한 간단합니다 - 각각 add 반복.

삽입 할 때이를 수행하려면 * 이 아닌 List이 아닌 클래스를 작성하는 것이 좋습니다. 필요한 작업을 의미있게 이해하십시오.

0

단순히 20 자까지의 배열 인 사용자 정의 클래스의 ArrayList를 가질 수도 있습니다. 단점은 본질적으로 Java String 클래스를 다시 구현한다는 것입니다.

관련 문제