【问题标题】:C# :Find Date enclose in brackets in stringC#:在字符串中查找括在括号中的日期
【发布时间】:2014-06-11 05:36:38
【问题描述】:

你好!

我正在尝试找到一种解决方法来处理 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%)

【问题讨论】:

  • 你所有的日期都是这种格式吗?
  • @merlin2011 是的,它们都采用相同的格式dd/MM/yyyy - dd/MM/yyyy
  • 听起来有点正则表达式会让你摆脱你的问题......看看阿米尔的回答

标签: c# regex date


【解决方案1】:

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

\(\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)

【讨论】:

  • 我使用了正则表达式,但我可以得到它匹配的索引值吗?我正在尝试查找要替换的字符串的开始和结束索引。
  • 我认为你可以使用 Regex.Replace()
猜你喜欢
  • 2012-10-09
  • 2023-02-16
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2015-05-05
  • 1970-01-01
相关资源
最近更新 更多