Les signes diacritiques, tels que les tildes, les circonflexes, les carets, les trémas et les carons, peuvent modifier la prononciation des caractères. Pour faciliter une recherche et une comparaison efficaces, il peut être nécessaire de supprimer ces marques et d'obtenir la contrepartie "simple" des caractères.
Utilisant la normalisation Unicode et les expressions régulières, l'implémentation Java suivante supprime efficacement les signes diacritiques :
import java.text.Normalizer; import java.util.regex.Pattern; public class DiacriticStripper { private static final Pattern DIACRITICS_PATTERN = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+"); public static String stripDiacritics(String input) { String normalizedInput = Normalizer.normalize(input, Normalizer.Form.NFD); return DIACRITICS_PATTERN.matcher(normalizedInput).replaceAll(""); } }
Par exemple, la chaîne d'entrée "ńǹňñṅņṇṋṉ̈ɲƞᶇɳȵ" serait transformé en "n".
La solution fournie traite spécifiquement les signes diacritiques. Si des caractères spéciaux non diacritiques supplémentaires doivent être traités, une méthode de simplification de chaîne plus complète peut être utilisée :
import java.text.Normalizer; import java.util.regex.Pattern; public class StringSimplifier { private static final Pattern DIACRITICS_PATTERN = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+"); public static String simplify(String input) { String normalizedInput = Normalizer.normalize(input, Normalizer.Form.NFD); String diacriticStripped = DIACRITICS_PATTERN.matcher(normalizedInput).replaceAll(""); // Replace additional non-diacritic special characters using a custom mapping // ... return simplifiedString.toLowerCase(); } }
En considérant une gamme plus large de caractères, cette méthode fournit un processus de simplification de chaîne plus complet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!