簡體   English   中英

如何替換部分連接字符串?

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

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