首页 > 解决方案 > 使用 StringSplitOptions 获取单词列表 VB.NET

问题描述

试图从 RichTextBox 获取电子邮件列表以在列表框中。

所以我使用(对于每个,StringSplitOptions,来分割全文)

Richtextbox :“one@gmail.com two@yahoo.com three@hotmail.com 就是这样”

代码

 For Each str As String In RichTextBox1.Text.Split(New String() {"@"}, StringSplitOptions.None)

        ListBox1.Items.Add(str.Substring(str.LastIndexOf(" ") + 1))

 Next

结果列表框:

全部

标签: vb.net

解决方案


如果您在“@Gmail.com”上搜索,您可以将循环更改为整数

对于 i = 0 到 Length - 1 并使用子字符串

(str.substring(str.indexof(" "), str.indexof(" .com")),或者只是添加+@gmail.com

那么它的正常原因你得到分裂@,所以你需要使用正则表达式

但在那种情况下,你会找到所有邮件论坛,所以我建议,要获得有效的电子邮件列表,搜索包含电子邮件列表的(@ 和 .)。

Dim reg As Regex = New Regex("(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@" &
               "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\." &
               "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" &
                "([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})", RegexOptions.Compiled Or RegexOptions.IgnoreCase)

    For Each email As Match In reg.Matches(RichTextBox1.Text)
        ListBox1.Items.Add(email.Value.ToString())
    Next

MessageBox.Show("Done")

希望它有效


推荐阅读