C# - 替换字符串中的字符

hma*_*led 2 c# string connection-string

我有一个包含登录名,数据库和密码的字符串.

string str = "user Id=abc, database=DDD, Password=mypasswd"  
Run Code Online (Sandbox Code Playgroud)

我希望能够用不同的值替换数据库值"DDD".

我尝试使用string.Replace,但我不知道现有的数据库是什么.

有谁知道一个简单的解决方案?

Aka*_*ava 11

以下是MSDN唯一推荐的防止连接字符串注入攻击的方法

http://msdn.microsoft.com/en-us/library/ms254947.aspx

// cs stores previous connection string which came from config

System.Data.SqlClient.SqlConnectionStringBuilder builder = 
    new System.Data.SqlClient.SqlConnectionStringBuilder(cs);
builder.InitialCatalog = "NEWDB";

// you get your database name replaced properly...
cs = builder.ToString();
Run Code Online (Sandbox Code Playgroud)

根据数据库或数据库驱动程序的类型,您必须使用不同的类,对于MySql,它应该是MySqlConnectionStringBuilder,属性名称可能是Database.


Mik*_*oud 5

一种替代方法是使用正则表达式,这将替代你:

using System.Text.RegularExpressions;

string cStr = "user Id=abc, database=DDD, Password=mypasswd";
Console.WriteLine(cStr);

Regex r = new Regex("(?<=database=)(.+?)(?=,)");
cStr = r.Replace(cStr, "NewDatabaseName");

Console.WriteLine(cStr);
Run Code Online (Sandbox Code Playgroud)

注意:这是经过编译,运行和验证的,scriptcs所以它在您的解决方案中是相当可观的.