簡體   English   中英

C# String.Replace() 和 Regex.Replace() 在我這邊不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM