-5

投稿概要というページがあります。このページの下で、単語の総数と一意の単語の総数を数えたいと思います。投稿の総単語数をうまく数えることができました。しかし、ユニークワードの数え方がわかりません。

例:「今日の学校はとても楽しかったです。」

期待される出力:

Total word count: 6
Unique word count: 5

これが私の現在のコードです:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace empTRUST
{
    public partial class PostSummary : Form
    {
        string target_fbid;
        string fbStatus;

        public PostSummary(string target_fbid, string fbStatus)
        {
            InitializeComponent();
            this.target_fbid = target_fbid;
            this.fbStatus = fbStatus;
        }

        private void PostSummary_Load(object sender, EventArgs e)
        {
            label_totalwordcount.Text = fbStatus.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries).Length.ToString();
        }
    }
}
4

3 に答える 3

3

には繰り返しの単語がないため、あなたの例がわかりません"I enjoyed school today very much"。ただし、これはあなたのために働くかもしれない素朴なアプローチです:

var allWords = text.Split();
int count = allWords.Length;  // 6
int unqiueCount = allWords.Distinct().Count();  // 6

句読点文字が結果を変更するため、単純です。したがって、最初のステップでそれらを置き換えたいと思うかもしれません:

var allWords = text.ToUpperInvariant().Replace(".", "").Replace(",","").Split(); // ...

また、ケースによって結果が変更されるため、必要に応じて大文字と小文字を区別せずに比較できます。

于 2013-07-22T08:42:41.077 に答える
1

次のようなものを使用できます。

"I enjoyed school school today very much.".Split(' ').Distinct()

6これは、「学校」という言葉が何回も出てきても を返します2

編集

カスタム比較ロジック (大文字と小文字を区別しないなど) が必要な場合は、カスタム等値比較子を指定できるDistinct オーバーロードを使用できます。

于 2013-07-22T08:42:38.407 に答える