0

我找到了一个可以做到这一点的课程,这似乎正是我所需要的。

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方法中完成的。AsyncTaskListFragement

我这样做对吗?

4

2 回答 2

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;
  }
于 2012-12-09T06:21:18.057 回答
0
public static String limit(String value, int length)
  {
    return value+"...";
  }
于 2012-12-09T06:20:52.163 回答