質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

2回答

4014閲覧

C# Tuple の使い方がよくわかりません。

kazukojima

総合スコア7

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2016/08/22 06:29

Webで拾ってきたコードです。 正規表現を使ってキーワード抽出をしているようなのですが、keywords の要素を参照するにはどうしたらよいのでしょうか? keyword.Item1 はエラーになります。 var keywords = Regex.Split(text, "[^ァ-ヶa-zA-Z一-龠-ー ]+") .Select(x => x.Trim()) .Where(x => x.Length > 3) .GroupBy(x => x, x => x, (x, y) => new Tuple<string, int>(x, y.Count()), StringComparer.CurrentCultureIgnoreCase) .OrderByDescending(x => x.Item2) .Take(10);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Tupleはその要素に Item1, Item2....というメンバを持ちます。
今回は Tuple<string, int>なので Item1がstring, Item2がintのメンバです。

そのLINQだと、Item1にキーワード、Item2に個数が入ってます。

C#

1foreach(var valCountPair in keywords) { 2 Console.WriteLine("keyword : " + valCountPair.Item1 + ", count :" + valCountPair.Item2 ); 3}

投稿2016/08/22 06:55

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazukojima

2016/08/22 23:43

ご教示ありがとうございます。 文字列を Tuple に代入するには、keywords = "ABCDE123埼玉県"; でいいんですかね。自分でもやってみますが。。。
kazukojima

2016/08/23 00:06

任意の文字列から、キーワードを抽出したいのです。
flied_onion

2016/08/23 01:50

拾ってきたコードがあなたの希望に合うキーワード抽出をしてくれているかはわかりませんが(元サイト見るとか、処理を読み取くとかしてください)、抽出前の文字列はtextにセットしておく必要があります。 そのコードに連なっている処理がそのtextに対して行われ、keywordsに結果が格納されます。
guest

0

keywords変数は複数の要素を返す可能性があるため
IEnumerable<Tuple<string, int>>型になります。
IEnumerable型ですのでそのままforeachに突っ込み、各要素のItem1,Item2を見ていけば良いと思います

csharp

1 foreach(var item in keywords) 2{ 3 /* item.Item1やitem.Item2に対する処理 */ 4}

投稿2016/08/22 06:52

編集2016/08/22 07:08
MMashiro

総合スコア2378

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazukojima

2016/08/22 23:44

ご教示ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問