2010-07-31 3 views
1

어떻게 여러 패턴을 regex.replace() 패턴 매개 변수에 전달할 수 있습니까?regex.replace()의 여러 패턴 C#

PHP에서는 방금 PHP가 포함 된 배열을 포기합니다. C#에서 같은 옵션이 있습니까?

일부 사용자 이름을 반복하고 있으며 일부 사용자 이름은 HTML 태그로 둘러싸여 있습니다. html 태그가 모두 동일하지는 않습니다. 그러나 나는 그들이 어떤 것들인지 압니다.

그래서 regex.replace() 패턴 매개 변수에서 찾을 여러 패턴을 전달할 수 있으면 좋을 것입니다. 아니면 각 HTML 태그마다 별도의 패턴을 만들고 regex.replace() 함수를 실행해야합니다.

희망을 달성하기 위해 노력하고있는 것이 확실합니다.

미리 감사드립니다.

[편집] @Alan 무어,

결론은, 문자열에서 모든 HTML 태그를 제거, 내가 할 노력하고있어 것입니다.

[/ 편집]

+1

당신은 더 나은 도움이되지 얻을 것이다 : 단지 이 태그처럼을 보이는 것을 제거합니다. 다른 언어로 알고있는 비밀 장치에 대해 잊어 버리고 달성하려는 결과가 무엇인지 말해주십시오. 그리고 귀하의 질문을 편집하여 의견이 아닌 정보를 입력하십시오. –

답변

2

그래서 문자열 목록이 있습니다. 각 문자열은 모두 선택적으로 HTML 태그로 묶인 사용자 이름? 태그가 어떤 태그인지는 중요하지 않습니다. 당신이 그것을 할하려는 방법 * * 당신은 * 할하려는 * 사항을 알려주십시오 경우

name = Regex.Replace(name, @"</?\w+[^<>]*>", String.Empty); 
7
// I’m assuming you have a regex for each thing you want to replace 
List<string> multiplePatterns = [...]; 

string result = Regex.Replace(input, string.Join("|", multiplePatterns), ""); 
5

를 사용하여 정규 표현식 분할 |, 예를 들면 :

</?html>|</?head>|</?div> 
1

성능이 중요하고 사용자 이름에 '<'또는 '>'의 위험이 없다면, 이것은 작동 할 수 있습니다 :

string RemoveTags(string s) 
     { 
      int startIndex = s.IndexOf('<'); 
      int endIndex = s.IndexOf('>'); 
      return startIndex >= 0 && endIndex >= 0 ? RemoveTags(s.Remove(startIndex, endIndex - startIndex + 1)) : s; 
     }