유니코드 문자에서 발음 구별 기호(예: 물결표, 움라우트 등)를 제거하려면 다음 알고리즘 사용을 고려하세요.
에서 Java에서는 다음 코드를 활용합니다.
public static final Pattern DIACRITICS_AND_FRIENDS = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+"); private static String stripDiacritics(String str) { str = Normalizer.normalize(str, Normalizer.Form.NFD); str = DIACRITICS_AND_FRIENDS.matcher(str).replaceAll(""); return str; }
예:
stripDiacritics("Björn") = Bjorn
보다 포괄적인 솔루션을 위해 두 번째 정리 단계를 포함하여 발음 구별 특수 문자
public static final char DEFAULT_REPLACE_CHAR = '-'; public static final String DEFAULT_REPLACE = String.valueOf(DEFAULT_REPLACE_CHAR); private static final ImmutableMap<String, String> NONDIACRITICS = ImmutableMap.<String, String>builder() // ... [List of non-diacritic characters] public static String simplifiedString(String orig) { String str = orig; if (str == null) { return null; } str = stripDiacritics(str); str = stripNonDiacritics(str); if (str.length() == 0) { // ... } return str.toLowerCase(); } // ... [Continued implementation]
이러한 알고리즘은 검색 목적으로 발음 구별 부호를 효과적으로 제거합니다. 그러나 Białegostok의 "ł"과 같은 발음 구별 부호가 없는 특수 문자는 추가 처리가 필요합니다. 향상된 알고리즘은 이러한 문자를 가장 가까운 문자로 바꾸려고 시도합니다.
위 내용은 Java의 유니코드 문자열에서 분음 부호를 효율적으로 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!