2016-12-22 5 views
1

値に文字列が含まれているArrayListの要素を削除する方法を解明しようとしています。文字列を含むArrayListからすべての要素を削除します

私のアレイは、次のようになります。

[0] "\"MAERSKA.CO\",N/A,N/A,N/A,N/A,N/A,N/A" 
[1] "\"GEN.COABB.ST\",N/A,N/A,N/A,N/A,N/A,N/A" 
[2] "\"ARCM.ST\",\"Arcam AB\",330.00,330.50,332.00,330.50,330.00" 

そして、私のArrayListには、次のように作成されます。

string stringToRemove = "NA"; 
ArrayList rows = new ArrayList(csvData.Replace("\r", "").Split('\n')); 

そこで問題は、私は「NA」が含まれているすべてのエントリを削除する方法です。 私は、RemoveAtまたはRemoveAllをいくつかの組み合わせの組み合わせで試しましたが、コードが正しく表示されないようです。

避けることができる場合は、新しい配列を作成したくありません。

よろしく フレミング

+0

書きください。何が何であり、何が何になるか。 –

+0

string.Replace(data、 "")はどうですか? rows = new ArrayList(csvData.Replace( "\ r"、 "").Split( '\ n')。選択(st => st.Replace(st、 ""))); – Tistkle

+0

Simser&Gabbaのソリューションはどちらも完璧に機能します。 2つのソリューションが提供されたのでSimserに受け入れてください。 –

答えて

1

:あなたがインスタンス化した後、あなたのArrayListを減らしたい場合は

ArrayList rows = new ArrayList(csvData.Replace("\r", "").Split('\n').Where(r => !r.Contains(stringToRemove)).ToList()); 

、あなたはこれを試すことができます。

for (int i = 0; i < rows.Count; i++) 
{ 
    var row = (string)rows[i]; 
    if (row.Contains(stringToRemove)) 
    { 
     rows.RemoveAt(i); 
     i--; 
    } 
} 
0

次のコードでは、 "N/A" 以外のすべての文字列を含む出力としてリストを作成します。

var outputs = new List<string>(); 
foreach (var item in input) 
{ 
    var splitted = item.Split(','); 
    foreach (var splt in splitted) 
    { 
     if (splt != "N/A") 
     { 
      outputs.Add(splt); 
     } 
    } 
} 

入力があなたの配列です。あなたはLINQを前に、あなたのArrayListを減らし、あなたの変数をインスタンス化し、使用することを検討したい場合

+0

"N/A"を含むエントリ/行を削除し、 "N/A"を除くすべての単語の新しいリストを作成しないことが問題だと思います。 – Simser

+0

投稿していただきありがとうございます。 私はこのソリューションを別のものを使用することができますが、以下の回答は問題の解決に適しています。 –

関連する問題