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