我有一个字符串。我想用“dd”替换“d”,使用Regex.Replace,但前提是d不重复。
例如,如果字符串是“m / d / yy”,我想将其更改为“m / dd / yy”。但是,如果字符串是“m / dd / yy”,我想保持相同,而不是将其更改为“m / dddd / yy”。
我该怎么做?我尝试过Reg.Replace(datePattern,“\ bd \ b”,“dd”),但这似乎不起作用。
答案 0 :(得分:1)
(.)(?<!\1.)(?!\1)
字面意思是“字符,不在其前面,也不在其后面”。
答案 1 :(得分:1)
您可以使用lookahead and lookbehind检查每个d
是否先于其他Regex.Replace(datePattern, "(?<!d)d(?!d)", "dd")
:
datePattern.Replace("/d/", "/dd/")
对于您问题中的特定示例,普通字符串替换比使用正则表达式更简单:{{1}}。我猜你的实际要求更复杂,因此是正则表达式。
答案 2 :(得分:0)
我认为你是对的;虽然你可能错误地逃过了字符。尝试:
Regex.Replace(datePattern, "\\bd\\b", "dd")
答案 3 :(得分:0)
我认为这对你想要做的事情有用:
Reg.Replace(datePattern, "/d/", "/dd/")
答案 4 :(得分:0)
更简单的方法是这样的:
Regex regex = new Regex(@"/(d|ddd)/");
string replacement = "/$1d/";
string updated = regex.Replace("m/d/yy", replacement);
string updated2 = regex.Replace("m/ddd/yy", replacement);
string notUpdated = regex.Replace("m/dd/yy", replacement);
string notUpdated2 = regex.Replace("m/dddd/yy", replacement);