Regex.Replace和String.Replace不起作用

时间:2014-04-29 13:27:55

标签: .net regex

我有一个字符串01-Jan-2014 00:00:00,我打算将这一年缩短为2个字符。

我的代码:

DateTime dtParsedDate = new DateTime();
string strInput = "01-Jan-2014 00:00:00";
Regex regDate = new Regex(@"\d{2}-\w{3}-\d{4}");

// parse into datetime object
dtParsedDate = DateTime.ParseExact(regDate.Match(strInput).Value, "dd-MMM-yyyy", CultureInfo.InvariantCulture);

// replace the string with new format
regDate.Replace(arrData[iCol], dtParsedDate.ToString("dd-MMM-yy"));

我已经使用正则表达式验证了字符串是否正确匹配。

" 01-JAN-2014"没有被替换为" 01-Jan-14"。我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

在.NET中,字符串是不可变的,并且所有替换方法都不会就地替换,但会返回一个替换完成的新字符串。

答案 1 :(得分:2)

Regex.ReplaceString.Replace不修改现有字符串:它们返回修改后的字符串。尝试将代码更改为:

arrData[iCol] = regDate.Replace(arrData[iCol], dtParsedDate.ToString("dd-MMM-yy"));