2016-09-12 5 views
0

필자는 발음 구별 부호로 문자열을 대체하려고하지만 행운은 없습니다. 예를 들어, "Ю"와 "ю"를 "yu", "Б"와 "б"를 "b"등으로 바꿔야합니다.regex.replace C# diacritics

case "LastRUEN": 
       if (csentry["LAST"].IsPresent) 
       { 
        string FIELD_RU = csentry["LAST"].Value; 
        string FIELD_EN; 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Аа]", "a"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Бб]", "b"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Вв]", "v"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Гг]", "h"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Ґґ]", "g"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Дд]", "d"); 
        FIELD_EN = Regex.Replace(FIELD_RU, "[Ее]", "e"); 
        mventry["lastNameEN"].Value = FIELD_EN; 
} 
break; 

아무도 문제 해결 hepl 수 : 나는 이러한 코드, 작동하지 않는 경우가 ? 아마도 내 경우에 대한 방법을 사용하는 것이 더 좋을까요? 감사합니다.

+2

발음 구별 부호 ("액센트")가 아니며 키릴 문자를 라틴어로 번역하려고합니다. – Mat

+0

왜 정규식이 필요합니까? 그냥'string.Replace()'를 사용할 수 없습니까? – Natrium

+1

변경되지 않은 'FIELD_RU'에서 계속 대체합니다. 즉, 'FIELD_EN'에는 마지막 대체 항목 만 포함됩니다. 어쨌든, 당신이 음역하고 있기 때문에, 아마도 char에 의해 char이 가고 어쨌든 문자열 대체를하기보다는 사전에 기반한 음역 된 문자열을 만들고 싶을 것입니다. – Luaan

답변

3

Replace 호출 결과가 다음 작업의 입력이되기 때문에 더 잘 작동합니다.

물론 작업을 별도의 방법으로 옮겨야합니다.

EDIT : Replace Multiple Characters in a String은 여러 호출을 결합하기 위해 노력하고 있습니다.

+0

감사합니다, rboe, 그건 내 바보 같은 실수 였어. – Alex

+0

문제 없어요, 천문학 자입니다. –

+0

그리고 그 답이 도움이된다면, 대답으로 표시하는 것을 잊지 마십시오. –

관련 문제