【问题标题】:String Split & Search VB.NET字符串拆分和搜索 VB.NET
【发布时间】:2010-01-28 19:22:35
【问题描述】:

需要在vb中取一个字符串并拆分。还需要查看两个返回值,返回包含“domain1.com”的值。管道是分隔符。

txtEmailFrom.Text = "john@huno.com|james@domain1.com"
Dim brokened() As String
brokened = Split(txtEmailFrom.Text, "|")

不知道从这里去哪里......

【问题讨论】:

标签: .net asp.net vb.net string


【解决方案1】:
For Each email In brokened
    If email.Contains("domain1.com") Then
        Return email
    End If
Next

【讨论】:

  • LINQ 有一个时间和地点,我想说这不是其中之一,像你这样的一个很好的旧 FOR 循环在这里效果最好,其他人更容易阅读。
【解决方案2】:
txtEmailFrom.Text = "john@huno.com|james@domain1.com"
Dim brokened() As String
dim email as string
dim emailSplit() as string
brokened = Split(txtEmailFrom.Text, "|")

for email in brokened
   emailSplit = Split(email, "|")
   if emailSplit(1) = "domain1.com" then
      Console.WriteLine(email)
   end if
next

我是在没有 IDE 的情况下编写的,这可能是 VB6 风格。
希望它能给你一个转换到 VB.net 的想法

编辑:当然,最好在if emailSplit(1) = ...这一行之前添加对数组边界的检查。

【讨论】:

    【解决方案3】:

    如果你可以使用 LINQ

     txtEmailFrom.Text = "john@huno.com|james@domain1.com"
     Dim result = txtEmailFrom.Text.Split(CChar("|")) _
                  .Where(Function(d) d.Contains("domain1.com")).FirstOrDefault
    

    【讨论】:

      【解决方案4】:

      我将拆分后的电子邮件放在一个列表中,并使用 list.FindAll 方法查找所有 domain1.com

      我打算用c#写这个,我比较熟悉,不过vb.net应该也一样

      List<string> emails = new List<string>();
      emails.AddRange(txtEmailFrom.Text.Split("|".ToCharArray()));
      
      emails.FindAll(s=> {return s.Contains("domain1.com");} );
      

      类似的东西......在没有IDE的情况下编写

      【讨论】:

        【解决方案5】:
        Dim test As String = "john@huno.com|james@domain1.com"
        Dim brokend() As String
        brokend = test.Split(New String() {"|"}, StringSplitOptions.None)
        
        For Each email As String In brokend
            If email.EndsWith("domain1.com") Then
                Return email;
            End If
        Next
        

        【讨论】:

          【解决方案6】:
          Dim brokened() As String = txtEmailFrom.Text.Split("|"c)
          
          Dim returnValue as String 
          
          For each item as String in brokened
            If item.Contains("domain1.com") Then
              returnValue = item
            End If 
          Next
          

          【讨论】:

            【解决方案7】:

            (我的回答被打断了,所以我决定写完!)

            你可以试试这个:

            Module Module1
            
                Sub Main()
            
                    Dim email As String = "john@huno.com|james@domain1.com"
            
                    Dim brokened() As String
                    brokened = Split(email, "|")
            
                    Dim k As List(Of String) = (From j As String In brokened _
                                                Where j.Contains("domain1.com") _
                                                Select j).ToList()
            
                    For Each u As String In k
                        Console.WriteLine(u)
                    Next
            
            
                End Sub
            
            End Module
            

            希望这会有所帮助。 贾斯。

            【讨论】:

            • 使用 firstOrDefault 不会返回数组或 ienumeration
            • @Fredou - 你说得对,我误解了要求。已相应更改代码。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-01-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多