繁体   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