我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:
我有一个纯文本文件。要求从文本文件中读取有效的电子邮件地址。
文本文件不包含任何特殊字符,每行只包含一个单词。
示例
test1
test@yahoo.com
test2
test@gmail.com
我尝试按以下方式读取文本文件:
var emails = File.ReadAllLines(@"foo.txt");
但是无法找到如何从文本文件中提取有效的电子邮件。
我正在使用C#4.0
我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:
我有一个纯文本文件。要求从文本文件中读取有效的电子邮件地址。
文本文件不包含任何特殊字符,每行只包含一个单词。
示例
test1
test@yahoo.com
test2
test@gmail.com
我尝试按以下方式读取文本文件:
var emails = File.ReadAllLines(@"foo.txt");
但是无法找到如何从文本文件中提取有效的电子邮件。
我正在使用C#4.0
如果你的电子邮件地址中只有一个 @
字符,你可以使用以下方法:
var emails = File.ReadAllLines(@"foo.txt").Where(line => line.Contains("@"));
好的,我承认。这是我见过的最糟糕的电子邮件验证:)
让我们更深入地了解一下。您可以使用MailAddress
类检查您的连接。让我们定义一个用于检查电子邮件地址是否有效的方法,如下;
public bool IsValidMailAddress(string s)
{
try
{
MailAddress m = new MailAddress(s);
return true;
}
catch (FormatException)
{
return false;
}
}
var emails = File.ReadAllLines(@"foo.txt").Where(line => IsValidMailAddress(line));
public bool IsValidEmail(string strIn)
{
invalid = false;
if (String.IsNullOrEmpty(strIn))
return false;
// Use IdnMapping class to convert Unicode domain names.
try {
strIn = Regex.Replace(strIn, @"(@)(.+)$", this.DomainMapper,
RegexOptions.None, TimeSpan.FromMilliseconds(200));
}
catch (RegexMatchTimeoutException) {
return false;
}
if (invalid)
return false;
// Return true if strIn is in valid e-mail format.
try {
return Regex.IsMatch(strIn,
@"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
@"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$",
RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250));
}
catch (RegexMatchTimeoutException) {
return false;
}
}
然后通过以下方式使用它:
var emails = File.ReadAllLines(@"foo.txt");
foreach(var line in emails)
{
if(IsValidEmail(line))
{ //do something with the valid email
}
}
您好,使用正则表达式来过滤有效的电子邮件地址。
以下是示例代码。
var emails = File.ReadAllLines(@"foo.txt")
.Where(x => x.IsValidEmailAddress());
public static class extensionMethods
{
public static bool IsValidEmailAddress(this string s)
{
Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
return regex.IsMatch(s);
}
}
你做的没错。你正在调用ReadAllLines
方法,该方法已经返回了数组
。你只需要使用foreach循环,如下所示:
var emails = File.ReadAllLines(@"foo.txt");
foreach (var email in emails)
{
//write validation logic of emails here
}
这取决于你对“有效”的定义。有些人采取简单的方法,只需在字符串中查找一个“@”和至少一个点号“.”。其他人则更深入地验证电子邮件地址,并尝试根据RFC 822的规范进行验证。
看起来,简单的方法适合您的需求。