2010-05-06 2 views
1

와일드 카드 형식의 검색과 문자열의 부분 교체 : 나는 M9 제거 할 (S1800과찾아 내가 파일을 읽고의 모든 인스턴스를 대체 할 수 있도록하려면

M9S1800.2 및 .2).

내가 겪고있는 문제는 "S"다음의 4 자리 숫자가 매번 다를 수 있으며 소수점 이후의 숫자도 다를 수 있다는 것입니다. 예를 들어

,

이 될 수 있습니다 M9S3200.1 또는 M9S5400.1 또는 M9S5400.2

사람은 어떻게 C#을 사용하여이 작업을 수행하는 나에게 보여 주시겠습니까?

StreamReader reader = new StreamReader(fDialog.FileName.ToString()); 
string content = reader.ReadToEnd(); 
reader.Close(); 

content = Regex.Replace(content, "M2", "M3"); 

을하지만 M9S3200.1으로, 나는 와일드 카드 타입을 대체하고 싶지 :

나는 발견하고이 코드를 사용하여 교체하는 방법을 알고있다. 예를 들어, M9S * .1을 S *로 바꾸면 M9S3200.1이 S3200이됩니다.

+0

여기 regexes에 대한 도움을 얻게되어 기쁘게 생각합니다. 여기에 약간의 도움말이 있습니다. C#은 JavaScript와 달리 정규식이 없습니다. –

+0

또한'string content = null;을 사용해야합니다. using (StreamReader reader = new StreamReadeer (...)) {content = reader.ReadToEnd();}'를 사용합니다. 예외가 Throw 되어도 클린 업합니다. –

답변

6
content = Regex.Replace(content, @"M9(S\d{4})\.\d", "$1"); 
+0

정말 고마워. 완벽하게 작동합니다. – fraXis

관련 문제