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 文字を超えていますか? この関数は、制限よりも長い場合にのみ結果を変更することに注意してください。

また、メソッドの戻り値を受け入れていないようです。このメソッドは引数の値を変更しません (できないため)、新しい値を持つ NEW String を返します。

試す

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 に答える