2016-10-11 10 views
0

私の2D配列には、文、そのトークン、およびそのタグがあります。名詞と動詞以外はすべて削除したい動詞/名詞でない全索引を削除したい。今すぐ私のコードは、そのインデックスにnullを配置しています。しかし、私はそのインデックスを配列から削除したい。私のコードは次のとおりです。C#で2D文字列から要素を削除するにはどうすればよいですか?

HashSet<String> tagsToRemove = new HashSet<String>() { "'NN'", "'NNS'", "'VBD'", "'VBG'", "'VBZ'", "'VB'" }; 

for (int i = 0; i < array2D_of_tags.GetLength(0); ++i) 
{ 
    if (!tagsToRemove.Contains(array2D_of_tags[i, 2])) 
     array2D_of_tags[i, 2] = null; 

    //Console.WriteLine(array2D_of_tags[i, 2]); 
} 

これはarray2D_of_tags内のデータです:

A supplier supplies many parts. | 'A' | 'DT' | 
A supplier supplies many parts. | 'supplier' | 'NN' | 
A supplier supplies many parts. | 'supplies' | 'NNS' | 
A supplier supplies many parts. | 'many' | 'JJ' | 
A supplier supplies many parts. | 'parts' | 'NNS' | 
A supplier supplies many parts. | '.' | '.' | 
+0

: あなたはこのような何かを書くことができます。入力データと期待される出力を表示してください。それは疑問をより明確にします。このデータを質問自体に追加してください:) –

+0

2x2配列から1つのアイテムを削除すると、新しい配列のサイズはどのくらいでしょうか? – Slai

+0

アレイは次のようになります。 | | | サプライヤは多くの部品を供給しています。 | |サプライヤー| 'NN' | サプライヤは多くの部品を供給しています。 | | 「NNS」| サプライヤは多くの部品を供給しています。 | 「たくさん」| 'JJ' | サプライヤは多くの部品を供給しています。 | | 「NNS」| サプライヤは多くの部品を供給しています。 | '。' | '。' | –

答えて

1

サイズが固定されているインデックスの原因のアレイを削除することはできません。 データ構造を維持してこれを実現するには、目的のデータを内部に持つ新しい配列を作成する必要があります。 `array2D_of_tags`のデータの例を追加すると便利でしょう

string[,] array2D_of_tags = new string[,] 
    { 
     {"A", "DT"}, {"supplier", "NN"}, {"supplies", "NNS"}, {"many", "JJ" } 
    }; 

    HashSet <string> tagsToRemove = new HashSet<string> { "'NN'", "'NNS'", "'VBD'" }; 
    int rowsToKeep = array2D_of_tags.GetLength(0) - tagsToRemove.Count; 

    string[,] newArr2d = new string[rowsToKeep, array2D_of_tags.GetLength(1)]; 
    int currentRow = 0; 
    for (int i = 0; i < array2D_of_tags.GetLength(0); i++) 
    { 
     if (!tagsToRemove.Contains(array2D_of_tags[i, 2])) //I didn't understand this, i take it from your code 
     { 
      for (int j = 0; j < array2D_of_tags.GetLength(1); j++) 
      { 
       newArr2d[currentRow, j] = array2D_of_tags[i, j]; 
      } 
      currentRow++; 
     } 
    } 
+0

しかし、私は本当にあなたのデータ構造を変更することをお勧めします。 辞書を見てください。彼らはすでにこのメソッドを実装しています。見てください [このウェブサイト:](https://www.dotnetperls.com/dictionary) – Alex

関連する問題