[英]C# String.Replace() & Regex.Replace() not working at my end
我正在嘗試用其他字符串替換一個字符串,但沒有任何效果。 我試過Regex.Replace() & String.Replace()但沒有運氣。
請參閱此代碼示例
string maindata = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999";
string data = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999";
//data = Regex.Escape(data);
string strformula = Regex.Replace(maindata, "\"" + data.Replace("(", "\\(").Replace(")", "\\)").Replace("$", "\\$") + "\"", "W51",RegexOptions.IgnoreCase);
strformula = maindata.Replace("\"" + data.Replace("(", "\\(").Replace(")", "\\)").Replace("$", "\\$") + "\"", "W51");
正則表達式.Escape(數據); 也不起作用。
我真的不明白為什么這個替換失敗的原因? 請指導我那里缺少什么?
謝謝
string maindata = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999";
string data = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999";
string strformula = Regex.Replace(maindata, data , "W51",RegexOptions.None);
我簡化了代碼,現在看到Regex.Replace不起作用。
從以下位置更改data
:
string data = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999";
至
string data = @"Operational Metrics~Domestic Subscribers Disney\+~2015 FY~9999";
您必須使用反斜杠轉義+
字符,因為+
在正則表達式中具有特殊含義。
我也在這里使用了逐字字符串(注意@
前綴)。 在逐字字符串中, \
沒有特殊含義,因此像\n
這樣的字符將按原樣打印,而不是換行。 如果您不想使用逐字字符串,則需要使用兩個反斜杠:
string data = "Operational Metrics~Domestic Subscribers Disney\\+~2015 FY~9999";
無需使用正則表達式
string maindata = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999";
string data = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999";
string strformula = maindata.Replace(data , "W51");
已經替換了 W51 的行。 在 DotNetFiddle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.