[英]How to replace part of Connection String?
我正在使用c#,我需要用其他數據替換字符串。 這是字符串,servername,user1和380kj數據和長度可以更改。
"Data Source=servername;User ID=user1;Password=380kj"
我想要這個結果:
"Data Source=servername;User ID=XXXXX;Password=XXXXX"
我已經在用戶ID和密碼上做了一個IndexOf但是我不知道如何獲得使用remove函數的確切計數,所以我可以將XXXXX插入到字符串中。
int index = SaleDatabase.ConnectionString.IndexOf("User ID=");
int index2 = SaleDatabase.ConnectionString.IndexOf(";Password");
我能做什么?
謝謝...
您可以使用String.Replace
方法,但在您的情況下,您似乎正在編輯數據庫連接字符串,在這種情況下,您應該使用特定的ConnectionStringBuilder作為該連接字符串,例如:
string connStr = "Data Source=servername;User ID=user1;Password=380kj";
System.Data.SqlClient.SqlConnectionStringBuilder sb = new System.Data.SqlClient.SqlConnectionStringBuilder(connStr);
sb.UserID = "XXXXX";
sb.Password = "XXXXX";
connStr = sb.ToString();
為什么不通過使用Split Method by character(“;”)拆分字符串。 結果將是數組。 然后你可以使用簡單的linq或foreach循環從結果數組中獲取值
在@MA Hamm建議的情況下,你肯定應該在這個特定的情況下使用ConnectionStringBuilder
。 但為了完整Regex.Replace
,您還可以使用簡單的Regex.Replace
執行此類操作。 就像是:
Regex r = new Regex(@"User ID=[^;]*");
String newString = r.Replace(s,"User ID=XXXX");
將查找以User ID=
開頭的文本並捕獲所有字符直到下一個;
(注意:如果用戶id包含一個;
這會破壞 - 但它可能會破壞,並且需要被轉義)。 然后我們用新字符串替換匹配的字符串。
為Password=
做同樣的Password=
留給讀者練習。
只需使用string.Format
並為示例生成一個新string
:
public static string GenerateConnectionString(string dataSource, string user, string password)
{
return string.Format("Data Source={0};User ID={1};Password={2}", dataSource, user, password);
}
一些解決方案可以非常簡單。 了解更多關於KISS的信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.