문제

위의 문자열을 주었고, ServeripAddress, db1, uid 및 ****이 값을 해당 문자열에서 얻고 싶습니다.

도움이 되었습니까?

해결책

BCL이 귀하를 위해 수행 할 수있을 때 연결 문자열을 구문 분석 할 필요가 없습니다.

var builder = new OleDbConnectionStringBuilder(connectionString);
var provider = builder.Provider;
var dataSource = builder.DataSource;
var initialCatalog = builder["Initial Catalog"];
var userID = builder["User ID"];
var password = builder["Password"];

OLE DB 연결 문자열의 경우 표준 크로스 프로비더 속성 만 강력하게 유형 된 속성 이름을 갖고 나머지는 인덱서를 통해 액세스됩니다.

다른 팁

Regex를 사용하지 마십시오.

연결 문자열을 구문 분석하십시오 SqlConnectionStringBuilder 그런 다음 키에 액세스하십시오.

var b = new SqlConnectionStringBuilder(myConnectionString);
var dataSource = b["Data Source"]; 
// etc.

훨씬 쉽고 유지 관리 가능하며 신뢰성이 높습니다.

data source=([^;]*);Initial Catalog=([^;]*);user id=([^;]*);Password=([^;"]*)

그런 다음 그룹 1에서 4로 일치합니다. 지루하면 그룹의 이름을 지정할 수 있습니다. 코드의 가독성에 도움이되지만 Regex 자체의 가독성에 거의 도움이되지 않습니다.

';'를 사용하여 가치를 분할하는 것이 더 쉽지 않습니까? char 다음 모든 항목을 '='char로 나눕니다.

이렇게하면 사용자가 연결 문자열을 편집 할 수 있으며 항목 순서조차 변경할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top