在我的代码执行期间
doc2.LoadHtml(item.InnerHtml);
string detail1 = item.InnerHtml.Trim();
string head1 = item.InnerText.Trim();
我在head1中得到了像这样的字符串
“2011年10月20日油籽作物的商品贸易估算及植物油的供应”或 “2011年4月的商品和针织品”等
现在我想只从该字符串中添加Date部分来插入与该帖子自动相关的日期,而不是手动。 head1字符串中的日期部分可能如下所示
>"______20.10.2011",
>"______April, 2011"______,
>"______Nov. 2008 to Oct. 2009",
>"___2007-08 (Nov.-Oct.)______"
我用什么函数或正则表达式只从字符串中获取日期部分???
答案 0 :(得分:0)
这将提取,解析和打印输入文本中的所有日期:
var regex = new Regex(@"\b\d{2}\.\d{2}.\d{4}\b");
foreach(Match m in regex.Matches(inputText))
{
DateTime dt;
if (DateTime.TryParseExact(m.Value, "dd.MM.yyyy", null, DateTimeStyles.None, out dt))
Console.WriteLine(dt.ToString());
}
现在,如果你只是想要第一个约会,你可以这样做:
static DateTime? GetFirstDateFromString(string inputText)
{
var regex = new Regex(@"\b\d{2}\.\d{2}.\d{4}\b");
foreach(Match m in regex.Matches(inputText))
{
DateTime dt;
if (DateTime.TryParseExact(m.Value, "dd.MM.yyyy", null, DateTimeStyles.None, out dt))
return dt;
}
return null;
}
请注意,该方法返回一个可为空的DateTime,以便在字符串不包含日期时返回null。
答案 1 :(得分:0)
假设你只处理英语,如果你从这个字符串列表开始怎么办?
January
February
March
April
May
June
July
August
September
October
November
December
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Sept
Oct
Nov
Dec
to
搜索了仅包含的最长子字符串:
并假设substring表示日期?
这是RegEx。只需选择它找到的最长匹配:
/\b(January|February|March|April|May|June|July|August|September|October|November|December|Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec|to|[^A-Za-z])+\b/gi