JAVA : comparaison de deux String de formats différents
Résolu
Milly7534
Messages postés
29
Statut
Membre
-
Milly7534 Messages postés 29 Statut Membre -
Milly7534 Messages postés 29 Statut Membre -
Bonjour,
Je dois actuellement programmer une fonction Java qui prend en paramètre un String
et qui va parcourir un fichier et comparer les données à la chaîne en entrée et m'afficher si oui ou non il y a correspondance.
Je cherche à mettre en correspondance des identifiants qui représentent le même objet mais qui n'ont pas le même format, ce qui pose problème pour la comparaison.
Exemple :
En entrée, ma chaîne est de la forme lettres-chiffresUnStringEnMinuscules et dans le fichier, tout est sous cette forme : chiffres-UnStringEnMajuscules.
Pour qu'il y ait correspondance, je dois vérifier que les "chiffres" sont égaux ainsi que les "UnString".
J'ai essayé différentes fonctions et les regex, sans obtenir ce que je voulais et je sèche un peu.
Quelqu'un connaîtrait-il un moyen efficace ?
Merci d'avance pour votre aide !
Je dois actuellement programmer une fonction Java qui prend en paramètre un String
et qui va parcourir un fichier et comparer les données à la chaîne en entrée et m'afficher si oui ou non il y a correspondance.
Je cherche à mettre en correspondance des identifiants qui représentent le même objet mais qui n'ont pas le même format, ce qui pose problème pour la comparaison.
Exemple :
En entrée, ma chaîne est de la forme lettres-chiffresUnStringEnMinuscules et dans le fichier, tout est sous cette forme : chiffres-UnStringEnMajuscules.
Pour qu'il y ait correspondance, je dois vérifier que les "chiffres" sont égaux ainsi que les "UnString".
J'ai essayé différentes fonctions et les regex, sans obtenir ce que je voulais et je sèche un peu.
Quelqu'un connaîtrait-il un moyen efficace ?
Merci d'avance pour votre aide !
A voir également:
- JAVA : comparaison de deux String de formats différents
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
6 réponses
Bonsoir,
Pour comparer des String de formats différents, il faut d'abord les convertir dans un format commun puis les comparer normalement. Exemple :
Pour comparer des String de formats différents, il faut d'abord les convertir dans un format commun puis les comparer normalement. Exemple :
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test
{
private static final Pattern PATTERN_1 = Pattern.compile("[A-Z]+-([0-9]+)([a-z]+[0-9]+)");
private static final Pattern PATTERN_2 = Pattern.compile("([0-9]+)-([A-Z]+[0-9]+)");
public static String convert(String str)
{
Matcher matcher1 = PATTERN_1.matcher(str);
if (matcher1.matches())
return matcher1.group(1) + matcher1.group(2);
Matcher matcher2 = PATTERN_2.matcher(str);
if (matcher2.matches())
return matcher2.group(1) + matcher2.group(2).toLowerCase();
return str;
}
public static boolean compare(String str1, String str2)
{
return convert(str1).equals(convert(str2));
}
public static void main(String[] args)
{
String str1 = "10-CHAINE3";
String str2 = "AA-10chaine3";
System.out.println(convert(str1)); // 10chaine3
System.out.println(convert(str2)); // 10chaine3
System.out.println(compare(str1, str2)); // true
}
}La confiance n'exclut pas le contrôle
Hello,
Je pense qu'il te faut utiliser la fonction matches :
Retourne ok.
Mon programme retournera ok pour tous les Strings qui contiennent "ooo".
Source :
https://stackoverflow.com/questions/15130309/how-to-use-regex-in-string-contains-method-in-java
Je pense qu'il te faut utiliser la fonction matches :
String a = "looool";
if(a.matches(".*ooo.*")){
System.out.println("ok");
}
Retourne ok.
Mon programme retournera ok pour tous les Strings qui contiennent "ooo".
Source :
https://stackoverflow.com/questions/15130309/how-to-use-regex-in-string-contains-method-in-java
Salut,
Désolé je ne comprends pas.
Tu aurais un exemple précis ?
String 1 = ?
String 2 = ?
Que veux-tu comparer ?
C'est un peu flou :)
Désolé je ne comprends pas.
Tu aurais un exemple précis ?
String 1 = ?
String 2 = ?
Que veux-tu comparer ?
C'est un peu flou :)
Désolée ^^
Voici un exemple concret :
Le paramètre de ma fonction (le string dont je cherche à vérifier l'existence) = AA-10chaine3
Mon fichier :
01-CHAINE1
02-CHAINE3
10-CHAINE2
...
10-CHAINE3
La chaîne correcte parmi celles du fichier est "10-CHAINE3" car on retrouve à la fois le 10 et chaine3.
Donc si mon paramètre est "AA-10chaine3", ma fonction doit me renvoyer qu'il y a bien une occurrence dans le fichier car il existe "10-CHAINE3".
Mais comment s'y prendre pour que la fonction y arrive ?
J'espère que c'est plus clair :)
Voici un exemple concret :
Le paramètre de ma fonction (le string dont je cherche à vérifier l'existence) = AA-10chaine3
Mon fichier :
01-CHAINE1
02-CHAINE3
10-CHAINE2
...
10-CHAINE3
La chaîne correcte parmi celles du fichier est "10-CHAINE3" car on retrouve à la fois le 10 et chaine3.
Donc si mon paramètre est "AA-10chaine3", ma fonction doit me renvoyer qu'il y a bien une occurrence dans le fichier car il existe "10-CHAINE3".
Mais comment s'y prendre pour que la fonction y arrive ?
J'espère que c'est plus clair :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
D'accord, on va tout reprendre :)
C'est un algo de ce style que tu veux ?
Donc tu veux simplement comparer AA-10chaine3 et 10-CHAINE3 ?
function (String s="AA-10chaine3") {
traitement...
si correspondance entre s et "10-CHAINE3" on retourne vrai
}
C'est un algo de ce style que tu veux ?
Donc tu veux simplement comparer AA-10chaine3 et 10-CHAINE3 ?
On les convertit donc avec les deux regex du début. Mais j'ai du mal avec les symboles, elles signifient quoi ?
Tu trouveras toute la documentation sur le format des regex en Java dans la javadoc de la classe Pattern :
https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
Ceci dit, les expressions que j'ai utilisé sont très basiques et tout les langages courants les utilise donc tu peux prendre n'importe quelle documentation pour les comprendre, y a vraiment rien de difficile ici.