C#:查找日期用括号括起来的字符串

时间:2014-06-11 05:36:38

标签: c# regex date

他在那儿!

我正在尝试找到一个解决方案来处理c#

中的字符串

问题陈述

我的文字输入为

W.E.Power Dividend Total Return (Net 2%) vs. S&P 500 Total Return Index (11/30/1989 - 09/30/2009)

我需要将字符串中的日期替换为我的日期11/05/1992-10/06/2013

当前

get_pub_data是输入文字

string year_date = get_pub_data.Split(new char[] { '(', ')' })[1];

所以我以前得到括号的内容。但是,我在一行中遇到了多个括号,因此上面的代码失败了。因为,它需要遇到第一个括号并用日期替换括号内容,我得到以下结果

输出错误

W.E. Power Dividend Total Return (12/31/99 - 12/31/13) vs. S&P 500 Total Return Index (11/30/1989 - 09/30/2009)

而不是替换(date),而是用日期替换(Net 2%)

1 个答案:

答案 0 :(得分:0)

你想在这里使用正则表达式:

\(\d{2}/\d{2}/\d{4}\s-\s\d{2}/\d{2}/\d{4}\)

这将使你回复:

(11/30/1989 - 09/30/2009)

仅查找日期使用此:

\d{2}/\d{2}/\d{4}

它将归还你:

11/30/1989

09/30/2009

C#代码示例:

string str = "W.E.Power Dividend Total Return (Net 2%) vs. S&P 500 Total Return Index (11/30/1989 - 09/30/2009)";
string pattern = @"\(\d{2}/\d{2}/\d{4}\s-\s\d{2}/\d{2}/\d{4}\)";
string replaced = Regex.Replace(str, pattern, @"(01\01\2013 - 01\01\2014)"); // W.E.Power Dividend Total Return (Net 2%) vs. S&P 500 Total Return Index (01\01\2013 - 01\01\2014)