En fait le séparateur de valeurs, c'est peut-être |; et non pas | ou ; ? Essaye comme ça alors :
Code:String[] List = line.split("\\|;",-1);
Version imprimable
En fait le séparateur de valeurs, c'est peut-être |; et non pas | ou ; ? Essaye comme ça alors :
Code:String[] List = line.split("\\|;",-1);
Re Mr JOEL,
ouii maintenant ça marche ,je viens de tester le traitement.
Merci beaucoup @JOEL
bonne journée
je marque le sujet par la suite Résolu
Merci encore une fois :)
Bonjour Joel,
une toute petite demande concernant la déclaration du pattern:
je veux la modifier cette déclaration pour qu'on puisse traiter seulement les fichiers sous format: "RTR_INJECT_TIERS_PROSPECTS_20160420"Citation:
private final static Pattern FILE_FILTER = Pattern.compile("RTR_INJECT_TIERS_PROSPECTS[^.]*\\.txt");
NB:le fichier est sans extension.
Merci d'avance monsieur joel.
Oui, tu peux.
:arrow: java.util.regex.Pattern
Merci pour votre réponse @joel,
si j'ai bien compris les 2 expressions entre le * ,représente le nom de fichier et l'extension.
Dans le cas que j'ai içi ,je dois trouver un fichier commençant par "RTR_INJECT_TIERS_PROSPECTS" et il est sans extension.
j'ai essayé avec ça :il traite le fichier concerné ,est ce que l'expression est valide j'espère?Code:Pattern.compile("RTR_INJECT_TIERS_PROSPECTS[^.]*\\.*")
L'astérisque (*) dans une expression régulière s'applique au motif précédent, pour indiquer qu'on cherche un nombre quelconque de fois ce motif, y compris 0 fois.
Par exemple "a*" veut dire une suite de a, "", "a", "aa", "aaa", etc. Comme le motif . signifie "n'importe quel caractère", ".*" est une expression qui valide toute chaîne de caractères (y compris une chaîne vide).
"RTR_INJECT_TIERS_PROSPECTS[^.]*\\.txt", signifie qui vérifier :
- d'abord la suite de caractères RTR_INJECT_TIERS_PROSPECTS
- suivi de [^.]*, soit [^.] de 0 à n fois
- [^.] signifie tout caractère sauf le .
Donc [^.]* signifie de 0 à n fois n'importe quel caractère sauf le point- suivi de \\., soit suivi d'un caractère .
- suivi de txt
Toi tu cherches un truc qui commence par RTR_INJECT_TIERS_PROSPECTS, suivi de quelque chose genre "_1234", sans extension. Déjà, tu pourrais simplifier au lieu d'utiliser une expression régulière, en utilisant un String.startsWith(), puisque tu cherches quelque chose qui commence par RTR_INJECT_TIERS_PROSPECTS.
En expressions régulière, écrire une expression qui valide un truc qui commence par un motif correspond à faire une expression qui vérifie le truc suivi de n'importe quoi (soit .*). Ensuite, tout dépend de si tu veux :
- que RTR_INJECT_TIERS_PROSPECTS soit toujours suivi de quelque chose (soit au moins un caractère, soit .+)
- que RTR_INJECT_TIERS_PROSPECTS puisse être suivi de 0 caractères
- qu'il y ait forcément un undescore suivi de chiffres uniquement (soit _\\d+)
- que l'extension soit absolument manquante (l'expression va dépendre des options précédentes) ou si on s'en moque d'avoir l'extension ou pas
Re ,
Merci pour ton explication détaillée ,maintenant j'ai compris le fonctionnement de cette expression régulière,donc comme vous l'avez mentionné je n'aurai pas besoin de cela ,je vais essayer d'utiliser l'autre expression :String.startsWith(),mais après avoir récupérer le chemin du fichier .
j'ai fait un test avant la fonction getFile comme ceçi:
Code:
1
2
3 if(FILE_FILTER.pattern().startsWith("RTR_INJECT_TIERS_PROSPECTS")) {File file = getFile(DIRECTORY, FILE_FILTER); ....