我的字符串如下;
oradb = Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.87.50)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=testdb)));User Id = john; Password=test;
我想从上面的连接字符串中只获取'192.168.87.50' , '1521' , 'testdb' , 'john'
并放入一些文本框。
我尝试用regexp制作,并了解regexp无法实现。
我该怎么做?
答案 0 :(得分:2)
虽然应该有一种更方便的方式,但你仍然可以使用RegExp 试试这段代码:
var input =
"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.87.50)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=testdb)));User Id = john; Password=test;";
var hostRegx = new Regex("HOST\\s*=\\s*(?<host>[^\\)]+)");
var portRegx = new Regex("PORT\\s*=\\s*(?<port>[^\\)]+)");
var dbRegx = new Regex("SERVICE_NAME\\s*=\\s*(?<db>[^\\)]+)");
var userRegx = new Regex("User Id\\s*=\\s*(?<user>[^;]+)");
var passRegx = new Regex("Password\\s*=\\s*(?<pass>[^;]+)");
var host = hostRegx.Match(input).Groups["host"].Value;
var port = portRegx.Match(input).Groups["port"].Value;
var db = dbRegx.Match(input).Groups["db"].Value;
var user = userRegx.Match(input).Groups["user"].Value;
var pass = passRegx.Match(input).Groups["pass"].Value;
答案 1 :(得分:1)
您可以使用连接对象来检索所有这些信息。
SqlConnection connection = new SqlConnection(connectionString); var dbName = connection.Database;
对于服务器名称:
DbConnection connection = new SqlConnection(connectionString);
var server = connection.DataSource;