2016-10-12 6 views
0

Visual Studio를 처음 사용하고 간단한 작업을 배우려고합니다. 내가 두 문자열을 비교하는 코드 (이름)Visual Studio의 문자열 비교에서 액센트 문자를 무시하십시오.

private bool compareNames(String value1, String value2) 
    { 
     if (value1 != null && value2 != null && value1.Trim().ToLower(). Equals(value2.Trim().ToLower())) 
     { 
      return true; 
     } 

     return false; 
    } 

위의 코드는 대소 문자를 구분 무시하지만 난 할 노력하고있어 것은이 부여 된에 특수 문자를 무시 ăîşéááö처럼.

나는 표준화()에서이 작업을 수행하려했지만 작동 것 같지 않습니다.

private bool compareNames(String value1, String value2) 
    { 
     if (value1 != null && value2 != null && value1.Trim().ToLower(). Equals(value2.Trim().ToLower())) 
     { 
      return true; 
     } 
     else if (value1 != null && value2 != null && value1.Trim().Normalize().Equals(value2.Trim().Normalize())) 
     { 
      return true; 
     } 

     return false; 
    } 

도움을 주시면 감사하겠습니다. 가능한 답변

+0

당신이 여기 해결책을 시도해 봤어 - http://stackoverflow.com/questions/20674577/how-to-compare-unicode-characters-that-look-alike? –

+0

답장을 보내 주셔서 감사합니다. 나는 그것을 다른 사람이 방법을 시도한 경우 (값! = null의 && 값 2! = NULL && value1.Trim(). 표준화 (NormalizationForm.FormKD) .Equals (value2.Trim(). 표준화 (NormalizationForm.FormKD))) { return true; } 하지만 작동하지 않는 것 같습니다. – r511

+0

나는 RemoveDiacritics 접근법을 의미한다. –

답변

0

하나는 RemoveDiacritcs 접근 방식을 사용하는 것입니다. 여기

static string RemoveDiacritics(string text) 
{ 
    var normalizedString = text.Normalize(NormalizationForm.FormD); 
    var stringBuilder = new StringBuilder(); 

    foreach (var c in normalizedString) 
    { 
     var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); 
     if (unicodeCategory != UnicodeCategory.NonSpacingMark) 
     { 
      stringBuilder.Append(c); 
     } 
    } 

    return stringBuilder.ToString().Normalize(NormalizationForm.FormC); 
} 

상세 정보 : How do I remove diacritics (accents) from a string in .NET?