リストに説明を含む商品リストページを作成しようとしています。ただし、ページは均一ではなく、非常に長いです。テキストをトリミングするいくつかの方法を試しましたが、これのためのベストプラクティスは何ですか?
テキストの最後に省略記号が付いている(x)文字と(x)単語でテキストを切り取ってみましたが、これは少し奇妙に見えました。単語/文を半分にカットします。
製品の説明が段落形式であると想定して、ブログがブログ記事をどのように切り取って抜粋または検索結果にコピーするかを検討してください。
ユーザーが製品の要点を取得するために必要な説明(およその文字数)の量を把握します。次に、制限内で最後の単語の終わりまで前方にトリミングします。
これは、Googleの検索結果の例です。
Wordを半分に切り取ると、ユーザーは最後のWordが何であるかをユーザーに推測させてしまい、あなたが言うように、それを奇妙に見せることができます。したがって、テキスト文字列が非常に短い場合(タイトルなど)は、最後の手段としてのみこれを行います。
このためのテキストを作成することをお勧めします(製品を販売する場合に推奨します)。ただし、作業が多すぎてプログラムで行う場合は、さまざまなレベルでテキストを切り取ることができるスクリプトを作成します。最初に段落の終わり、次に文、次に文の一部、次にWord、最後に文字を探します。
これについて説明しましょう。最大長の他に、テキストの最小長を定義する必要があります。
段落の最後のテキストを、最小および最大の文字数以内で切り取れるかどうかを確認します。
1が不可能な場合は、最小値と最大値の範囲内で適切に終了する文があるかどうかを確認してください。
2も不可能な場合は、切り捨て可能な文の部分を探します。コンマ、コロン、セミコロンなどを探します。
最小長と最大長の範囲内で最後の単語を探すことにより、さらに先に進むことができます。 (Wordが最小値に適合し、最大値を超える場合は、ダッシュを探すこともできます。必要に応じて正確にすることができます)
最後の手段では、最大文字数でテキストを切り取ります。
長い説明の場合は、ステップ3に到達することをほぼ不可能にする最小値を定義します。短い説明の場合、4に到達することは問題ありません。
WPFでのやり方が気に入っています。ボックスのサイズに合わせて切り取り、Wordまたは文字で中断します。境界線(境界線など)を表示すると、テキストが切り捨てられたことがわかりやすくなります。それがキャラクターにぶつかり、すぐにEdgeにトリミングされると、私はより直感的になり、スペースを最大限に活用できると思います。部分的な単語は、単語がないよりも多くの情報です。