:
scala> import java.text.Normalizer
import java.text.Normalizer
scala> def removeDiacritics(in: String) : String = {
| // Separate accents from characters and then remove non-unicode characters
| Normalizer.normalize(in, Normalizer.Form.NFD).replaceAll("\\p{M}", "")
| }
removeDiacritics: (in: String)String
scala> val languages = List("Deutsch","english","español")
languages: List[String] = List(Deutsch, english, español)
scala> val results = languages.map(removeDiacritics).filter(_.contains("espan"))
results: List[String] = List(espanol)
scala>
솔루션은 여기 당신이 contains("espan")
을하기 전에 목록을 매핑에 사용할 수있는 "removeDiacritics"기능을 제공합니다. 패턴 \p{M}
은 발음 구별 부호가 아닌 유니 코드가 아닌 것과 일치하는 반면 정규화 기는 알파벳 문자에서 발음 구별 기호를 분리한다는 것을 이해해야합니다.
이것의 한 가지 부작용은 발음 구별 부호가없는 문자열이 반환된다는 것입니다. 당신은 그것을 원하지 않을 지 모르지만 발음 구별없이 비교를 할 수있게되었으므로 원본을 돌려주기 위해 연습 문제로 남겨 둘 것입니다.
정확히 무엇을 구현합니까? 부분 일치? 유니 코드 문자를 영어 alplhabet로 번역 하시겠습니까? 'List ("español")'을 반환해야하는시기와 반환해야하는시기는 언제입니까? –
나는'espan'과'españ'에 돌려주고 싶습니다. – elmalto
이것 좀보세요 : http://stackoverflow.com/questions/1008802/converting-symbols-accent-letters-to-english-alphabet – dhg