2014-06-25 35 views
0

我有這樣的代碼:與string.replace不是爲我工作

string encodedKeywordsQueryValue = HttpUtility.UrlEncode(HttpContext.Current.Request.QueryString["keywords"]); 
query = query.Replace(HttpContext.Current.Request.QueryString["keywords"], encodedKeywordsQueryValue); 

其中

HttpContext.Current.Request.QueryString["keywords"] = "abc& abc" 

encodedKeywordsQueryValue=abc%26+abc 

我的老字符串值是沒有得到更換新的。

任何人都可以建議我這樣做嗎?我嘗試過刪除和插入字符串方法的組合,但沒有得到想要的結果。

請幫助我。

+3

查詢變量的值是什麼? –

+1

此方法自.NET 2.0起存在。它已被數噸開發人員使用多年。我不認爲你會得到這種基本操作的意外行爲。 –

回答

0

HttpContext.Current.Request.QueryString [ 「關鍵詞」] = 「ABC & ABC」和 encodedKeywordsQueryValue = abc%26 + abc

閱讀替換方法的文檔會告訴你,它不知道URL編碼,並不在乎 - 它是一個字符串方法。因此,處理未編碼的字符串。沒有類似的風格行爲 - 這是一個確切的「匹配和替換」。

我建議你爲這種行爲做一個單元測試,然後找出你想要的方式 - 然後你可以例如在這裏發佈一個帖子,這在某種程度上是基線有用的,因爲它會有一個確切的例子哪些行爲不起作用,不是我們解決的一些謎題。

0

你應該在替換的左側有一個確切的字符串。它不像'LIKE'那樣行事。見下面的例子:

string str1 = "abc"; 
string str2 = "abc&def"; 
str2.replace("d", str1); 

結果將是:

abc&abcef 

希望它有助於