2014-05-23 4 views
2

문자열에서 중복을 찾아서 제거하고 싶습니다.C#에서 문자열의 반복 된 단어를 검색하는 데 문제가 있습니까?

 string Tests = "Hi,World,Me,Hi,You"; 
     string[] Tests_Array = Tests.Split(','); 
     Regex FindDup = new Regex(@"(.+)\1", RegexOptions.IgnoreCase); 
     string t2 = ""; 
     foreach (string test in Tests_Array) 
     { 
      MatchCollection allMatches = FindDup.Matches(test); 

      foreach (Match item in allMatches) 
      { 
       t2 = FindDup.Replace(test, string.Empty); 
       textBox1.Text += string.Format(@"Final: ""{0}""", t2) + "\n"; 
      } 
     } 

그러나 그것은 작동하지 않습니다

내 코드는 여기에있다.

어디에 문제가 있는지 잘 모르겠습니까?

도움 주셔서 감사합니다.

+2

, **는 ** 수단을 작동하지 않는 것을 명확히하십시오 사용할 수 있습니다. 결과가 예상과 다를 경우 원하는 것을 지정하고 현재 가지고있는 것을 지정하십시오. 오류가있는 경우 오류 세부 정보를 추가하십시오. –

+0

왜 문자열을 분할하고 정규식을 사용합니까? 단어를 찾는 방법을 알고 있다면 세트를 사용하여 중복 된 것을 찾을 수도 있습니다. – Lee

답변

6

당신은 LINQ는

string Tests = "Hi,World,Me,Hi,You"; 
string[] Tests_Array = Tests.Split(','); 
string result = String.Join(",", Tests_Array.Distinct()); 
+0

감사합니다. +1을드립니다. –

1

당신은 간단하게이 작업을 수행 할 수

var words = new HashSet<string>(); 
string text = "Hi,World,Me,Hi,You"; 
text = Regex.Replace(text, "\\w+", t => words.Add(t.Value.ToUpperInvariant())? t.Value: String.Empty); 
+0

감사합니다. +1을드립니다. –