您好我有一个csv文件,我需要格式化(列)电子邮件,它们在csv中如下
<a href=\mailto:john@domain.com\">john@domain.com</a>"
<a href=\mailto:dave.h@domain22.co.uk\">dave.h@domain22.co.uk</a>"
等...
所以我想删除<a href=\mailto:john@domain.com\"> </a>"
并使用john@domain.com
我有以下
foreach (var clientI in clientImportList)
{
newClient = new DomainObjects.Client();
//Remove unwanted email text??
newClient.Email = clientI.Email
}
答案 0 :(得分:3)
我建议使用HtmlAgilityPack而不是自己解析它:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
string href = link["href"].Value;
// use "mailto:john@domain.com" here..
}
答案 1 :(得分:0)
您可以在此处测试正则表达式: https://regex101.com/
使用您的示例,这似乎有效:
mailto:(.*?)\\">
正则表达式所需的库是:
using System.Text.RegularExpressions;
答案 2 :(得分:-1)
如果你想以索引方式进行,例如:
const string start = "<a href=\\mailto:";
const string end = "\\\">";
string asd1 = "<a href=\\mailto:john@domain.com\\\">john@domain.com</a>\"";
int index1 = asd1.IndexOf(start);
int startPosition = index1 + start.Length;
int endPosition = asd1.IndexOf(end);
string email = asd1.Substring(startPosition, endPosition - startPosition);
答案 3 :(得分:-1)
我经常写自己的小实用程序类和扩展来处理这样的事情。由于这可能不是你最后一次做这样的事情,你可以这样做:
创建字符串类的扩展名:
public static class StringExtensions
{
public static string ExtractMiddle(this string text, string front, string back)
{
text = text.Substring(text.IndexOf(front) + 1);
return text.Remove(text.IndexOf(back));
}
}
然后这样做(可以使用更好的命名,但你明白了):
string emailAddress = text.ExtractMiddle(">", "<");