0

重複の可能性:
.Net C# の単語全体で文字列を切り捨てる

ニュースの簡単な説明を表示する必要があります。最大 200 文字と言って、最後の数文字を空白まで削除します。この種の文字列をどのようにトリップできるかわかりません

サンプルテキスト

sample news description of news sample news description of news sample news description of news sample news description of news sample news description of news sample news description of news sample news description of news.

以下のコードで出力

sample news description of news sample news description of news sample news description of news sample news description of news sample news description of news sample news description of news sample n

    if (sDesc.Length > 200)
    {
        sDesc = sDesc.Substring(0, 200);
       // sDesc = sDesc + "...";
    }

単語の一部が表示されないように、最後の数文字をトリミングするにはどうすればよいですか。私が言おうとしていることを理解していただければ幸いです。

希望する出力

サンプル ニュース ニュースの説明 サンプル ニュース ニュースの説明 サンプル ニュース ニュースの説明 サンプル ニュース ニュースの説明 サンプル ニュース ニュースの説明 サンプル ニュース ニュースの説明 サンプル

4

4 に答える 4

9

スペースのインデックスは、200 インデックスの直前にあるはずです。したがって、すべての出現箇所を検索してから、200 に最も近いもののインデックスを選択します。次に、このインデックスを使用して部分文字列を実行すると、準備が整います。

string myString = inputString.Substring(0, 200);

int index = myString.LastIndexOf(' ');

string outputString = myString.Substring(0, index);
于 2012-10-09T12:57:11.407 に答える
3
if (sDesc.Length > 200)
{
    var str = sDesc.Substring(0, 200);
    var result = str.Substring(0, str.LastIndexOf(' '));
}
于 2012-10-09T13:04:28.613 に答える
1

これは、最初に 200 で切り捨てるのではなく、LastIndexOf の start パラメーターと count パラメーターを使用することで stringcopy を 1 つ減らすため、受け入れられた回答としてより迅速になります。

            var lio = inputString.LastIndexOf(' ', 0, 200));
            if (lio==-1) lio = 200;
            var newString = inputString.Remove(lio);
于 2012-10-09T15:55:15.990 に答える
0

200 の後のスペースを見つけて、インデックス 200 の後の最初のスペースまで部分文字列を取ることができます。

int i = 200;
for(i=200; i < sDesc.Length; i++)
{
      if(input[i] == ' ')
         break;
}

string res = sDesc.Substring(0, i);
于 2012-10-09T13:05:59.353 に答える