正则表达式来修改字符串

时间:2017-10-23 09:31:11

标签: c# regex string

我有一个我需要修改的字符串。我需要修改的部分是字符串的结尾。这就像“2017年5月23日”。我只需要更改它的存储日期。

所以我尝试过这样的事情:

var texto = System.Text.RegularExpressions.Regex.Replace(test, "to "+@"^\d{1,2}\/\?[A-z]?\/\d{4}","to { refundEnd: dd MMM yyyy}");

但是,正则表达式存在问题,因为我没有匹配日期。 我正在使用'to',因为字符串中还有另一个日期,但这个日期不需要修改。

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

如果您真的想在替换它之前对日期做某事(例如,新日期将基于当前日期),那么正则表达式在此实例中非常有用。但是,根据您的问题,似乎并非如此。

如果您的日期格式总是相同的长度,那么您总是可以从最后修剪x个字符。但是您当前的尝试表明日期的某一部分将是未知长度(一个或两个数字)。基于此,我建议最好的方法是使用"to"的位置来确定应该删除的内容。

你可以通过两种不同的方式做到这一点,选择:

SPLIT方法

拆分"to"上的字符串,然后重建新字符串:

string[] values = test.Split("to");
string result = string.Format("{0} to {1}", values[0].Trim(), newDateString);

SUBSTRING方法

根据"to"的最后一个索引创建一个子字符串(我们使用最后一个索引,以防字符串中先前有任何其他匹配),它将为您提供"to"之前的所有内容。然后你可以将其余部分追加到最后:

string result = string.Format("{0} to {1}", test.Substring(0, test.LastIndexOf("to")).Trim(), newDateString);

答案 1 :(得分:-1)

最后,它对我有用的是:

var texto = System.Text.RegularExpressions.Regex
        .Replace(test, @"to\s+(\d{1,2})\s+([A-z]+)\s+(\d{4})", "to " 
         + refundEnd.ToString("dd MMM yyyy"));

这是两个问题的组合:

1.-获得正确的正则表达式。 2.-格式化新日期。

感谢大家的帮助!

答案 2 :(得分:-2)

你走了。

var texto = System.Text.RegularExpressions.Regex.Replace(test, @"to\s+(\d{1,2})\s+([A-z]+)\s+(\d{4})","to { refundEnd: $1 $2 $3}");

答案 3 :(得分:-3)

您可以删除最后11个字符并连接要为其添加后缀的新日期。

 //Your New Date string
 String yourDate = "dd MMM YYYY";
 var texto = test.Remove(test.Length - 11, 11)+yourDate;