0

複数行のテキスト ボックスの段落に次の内容が含まれているとします。

stringrandom@good
stringra12312@good
stringr2a123@bad
strsingra12312@good
strinsgr2a123@bad

次のような出力を生成したい:

stringrandom@good
stringra12312@good
strsingra12312@good

使ってみました

  If TextBox1.Lines.Count > 2 Then
      Dim newList As List(Of String) = TextBox1.Lines.ToList
      If newList.Contains("@bad") Then
          newList.RemoveAt(newList.Item(newList.Contains("@bad")))
      End If

      TextBox1.Lines = newList.ToArray
  End If

うまくいきません、誰か回避策を知っていますか?

4

4 に答える 4

4

LINQ を使用してリストを照会できます。

If TextBox1.Lines.Count > 2 Then
    Dim newList As List(Of String) = TextBox1.Lines.ToList
    newList = newList.Where(Function(x) Not x.Contains("bad")).ToList
End If

実際、If ステートメントは必要ありません。

Dim newList As List(Of String) = TextBox1.Lines.ToList
newList = newList.Where(Function(x) Not x.Contains("bad")).ToList

また、LINQ を TextBox に直接適用することで、さらに簡単に行うことができます。

Dim newList As List(Of String) = TextBox1.Lines _
                                 .ToList _
                                 .Where(Function(x) Not x.Contains("bad")) _
                                 .ToList
于 2013-08-08T13:12:22.203 に答える
0

正規表現 ( ) を使用してみてくださいSystem.Text.RegularExpressions。これを試して:

Dim lines = textBox1.Lines _
    .Where(Function(l) Not Regex.Match(l, "\w*@bad").Success) _
    .ToList()
于 2013-08-08T13:12:14.877 に答える
0

別の代替手段は(C#)です。

const string mail = "stringrandom@good";
const string mail1 = "stringra12312@good";
const string mail2 = "stringr2a123@bad";
const string mail3 = "strsingra12312@good";
const string mail4 = "strinsgr2a123@bad";

var mails = new string[] { mail, mail1, mail2, mail3, mail4 }; //List of addresses

var x = mails.Where(e => e.Contains("good")).ToList(); //Fetch where the list contains good

またはVBで

Dim x = mails.Where(Function(e) e.Contains("good")).ToList()
于 2013-08-08T13:31:57.640 に答える