在文本框中,我保留了电子邮件地址。 例如
Text_box.value="a@hotmail.com,b@hotmail.com,c@hotmail.com"
如何拆分所有电子邮件地址?我应该使用正则表达式吗?
最后,我想保留用户正确编码的任何电子邮件地址
答案 0 :(得分:3)
string[] s=Text_box.Text.split(',');
Regex R=new Regex("\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b");
var temp=from t in s where R.IsMatch(t) select t;
List<string> final=new List<string>();
final.addrange(temp);
使用此
答案 1 :(得分:1)
string[] emails = list.Split(new char[]{','});
答案 2 :(得分:0)
"a@hotmail.com,b@hotmail.com,c@hotmail.com".Split(',');
答案 3 :(得分:0)
分割字符串有两种方法。
1)每个字符串类型对象都有一个名为 Split()的方法,它接受字符数组或字符串数组。此数组的元素用于拆分给定的字符串。
string[] parts = Text_box.value.Split(new char[] {','});
2)虽然在这个例子中string.Split()就足够了,但我们可以使用正则表达式来实现相同的结果。要拆分的正则表达式是:
string[] parts = Regex.Split(Text_box.value,@",");
答案 4 :(得分:0)
这只会打印匹配的电子邮件地址,而不会打印不匹配的电子邮件地址。
private void Match()
{
Regex validationExpression = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
string text = "whatever@gmail;a@hotmail.com,gmail@sync,b@hotmail.com,c@hotmail.com,what,dhinesh@c";
MatchCollection matchCollection = validationExpression.Matches(text);
foreach (var matchedEmailAddress in matchCollection)
{
Console.WriteLine(matchedEmailAddress.ToString());
}
Console.ReadLine();
}
这将打印
a@hotmail.com
b@hotmail.com
c@hotmail.com
正则表达式无法匹配其他内容。
答案 5 :(得分:0)
您必须使用正确的正则表达式来查找所有形式的电子邮件地址(使用拉丁字母)。 检查维基百科(http://en.wikipedia.org/wiki/Email_address)以获取电子邮件地址的正确语法(更简单的方法)或RFC5322,5321(更难理解)。
我正在使用它:
(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*|""(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*"")@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])