我有一个我需要修改的字符串。我需要修改的部分是字符串的结尾。这就像“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',因为字符串中还有另一个日期,但这个日期不需要修改。
有什么想法吗?
答案 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;