2017-03-19 26 views
-1

我有一個像下面替換字符串的一部分在C#

[email protected]&password=somepassword&grant_type=password 

我想更換密碼的值,即somepassword *****的字符串。

我試着轉換爲列表等,但那不是很好。有沒有更好的方式來做到這在C#

+0

研究正則表達式。例如:https://msdn.microsoft.com/en-us/library/xwewhkd1(v=vs.110).aspx – Laith

+0

這就是我要找的,regEx一直是我的弱點 – user1144596

+0

請閱讀一些教程。像這樣一個https://regexone.com – Laith

回答

0

這裏的另一種方式來做到這一點,這只是工作,如果它是一個有效的查詢字符串(您可能需要一個):

string line = "[email protected]&password=somepassword&grant_type=password"; 
var parameters = System.Web.HttpUtility.ParseQueryString(line); 
parameters.Set("password", new string('*', parameters["password"].Length)); 
// Or if you want a fixed amount of asterisks: 
// parameters.Set("password", "********"); 
string fixedLine = parameters.ToString(); 

Console.WriteLine(line); 
Console.WriteLine(System.Web.HttpUtility.UrlDecode(fixedLine)); 

輸出:

[email protected]&password=somepassword&grant_type=password 
[email protected]&password=************&grant_type=password 
1

試試這個,

string result = Regex.Replace("[email protected]&grant_type=password&password=somepassword", @"(password=)[^\n]*", "$1********"); 

DEMO

+0

因此,基本上,你迫使用戶首先改變參數的順序,以使其工作,因爲它將從「密碼」中移除所有內容......對我來說這不是一個可接受的解決方案。 我寧願使用'Regex.Replace(「[email protected]&password=someprd&grant_type=password」,@「(&password =)[^ \ n] *&」,「$ 1 ********& 「)'(加2'&'以確保我們匹配正確的參數)。 – Andrew