2012-12-09 3 views
0

이 작업을 수행하는 클래스를 찾았습니다.Java에서 String을 추가하고 "..."을 추가합니다.

public static class StringUtil 
{ 
    public static String limit(String value, int length) 
    { 
    StringBuilder buf = new StringBuilder(value); 
    if (buf.length() > length) 
    { 
     buf.setLength(length); 
     buf.append("…"); 
    } 

    return buf.toString(); 
    } 
} 

나는 review라는 문자열을 가지고 있고, 나는 그 클래스 이런 식으로 사용

StringUtil.limit(review, 50); 

그것은 추가하지 않는 것입니다.

가치가있는 부분은 Android 앱용입니다. 이것은 PostExectute 방법 AsyncTask 안에 ListFragement 안에 행해지고있다.

내가이 일을 제대로하고 있습니까?

답변

1

보내는 문자열 (검토)이 50자를 초과합니까? 이 함수는 제한보다 길면 결과 만 수정합니다.

또한 메서드의 반환 값을 받아들이지 않는 것 같습니다. 이 메소드는 인수 값을 수정하지 않으므로 새로운 값을 가진 새로운 문자열을 리턴합니다.

은 수정 먼저 다음 공간으로 이동하는 당신이 물어

String newreview = StringUtil.limit(review, 50); 
System.out.println(newreview); 

확인하십시오. 나는 이것을 컴파일하지는 않았지만 가까이에 있어야한다.

public static String limit(String value, int length) 
    { 
    // note to Test this first, so you don't create a Buffer unnecessarily. 
    String ret = value; 
    if (value.length() > length) { 
     StringBuilder buf = new StringBuilder(value); 
     buf.setLength(length); 
     int cur = length; 
     while(cur < value.length() && value.charAt(cur) != ' ') { 
      buf.append(value.charAt(cur)); 
     } 
     if (cur == value.length()) { 
      ret = value; // we copied the whole string, as it turns out. 
     } else { 
      buf.append("..."); 
      ret = buf.toString(); 
     } 
    } 
    return value; 
    } 
+1

또한 제한이 끝나면 elipses를 추가하므로 실제로 53 자 길이의 String을 다시 얻을 수 있습니다. – billjamesdev

+0

당신이 옳았어요, 나는 새로운 결과에서 가치를 만들어야했습니다. 올바른 표시 .... 다시 한 번 감사드립니다. – KickingLettuce

+0

보너스 질문 : 문장을 자르고 싶지만 단어를 자르지 않으려는 경우 다음 공간에서만 멈출 수있는 무언가를 추가 할 수 있습니까? – KickingLettuce

0
public static String limit(String value, int length) 
    { 
    return value+"..."; 
    } 
+0

코드는 그대로 있습니다. 문제는 또 다른 문제입니다. – kiamlaluno

관련 문제