Implémentation d'un comparateur Java avec la sémantique de l'opérateur 'LIKE' de SQL
En SQL, l'opérateur 'LIKE' est largement utilisé pour faire correspondre des chaînes basées sur sur des modèles spécifiques. Pour obtenir des fonctionnalités similaires en Java, nous pouvons créer un comparateur personnalisé qui présente le même comportement.
Solution utilisant des expressions régulières
Les expressions régulières de Java peuvent être utilisées pour émuler le Opérateur 'LIKE'. En utilisant le caractère générique « * », n'importe quelle séquence de caractères peut être mise en correspondance. Par exemple, l'expression régulière suivante correspondra à n'importe quelle chaîne contenant « ital » n'importe où :
.*ital.*
De même, un espace réservé à un seul caractère peut être représenté par un point ('.'). Ainsi, l'expression régulière ci-dessous correspondra à n'importe quelle chaîne avec « gi » suivi de n'importe quel caractère unique, se terminant par « a » :
.*gi.a.*
Pour faire correspondre un point littéral, échappez-le à l'aide d'une barre oblique :
\.
Implémentation du Comparateur
À l'aide d'expressions régulières, nous pouvons maintenant implémenter un Java comparateur qui se comporte comme l'opérateur SQL 'LIKE' :
import java.util.Comparator; import java.util.regex.Pattern; public class LikeComparator implements Comparator<String> { @Override public int compare(String s1, String s2) { Pattern pattern = Pattern.compile(s2); return pattern.matcher(s1).matches() ? 0 : 1; } }
Exemple d'utilisation
Pour utiliser le comparateur, instanciez-le simplement et comparez les chaînes à l'aide de l'option 'comparer' méthode :
LikeComparator comparator = new LikeComparator(); System.out.println(comparator.compare("digital", "%ital%")); // true System.out.println(comparator.compare("digital", "%gi?a%")); // true System.out.println(comparator.compare("digital", "digi%")); // true System.out.println(comparator.compare("digital", "%cam%")); // false System.out.println(comparator.compare("digital", "tal%")); // false
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!