Modifier une chaine de caractère d'un fichier
Fermé
khalous91
Messages postés
18
Date d'inscription
mercredi 15 avril 2015
Statut
Membre
Dernière intervention
17 juin 2015
-
11 mai 2015 à 14:08
khalous91 Messages postés 18 Date d'inscription mercredi 15 avril 2015 Statut Membre Dernière intervention 17 juin 2015 - 11 mai 2015 à 14:33
khalous91 Messages postés 18 Date d'inscription mercredi 15 avril 2015 Statut Membre Dernière intervention 17 juin 2015 - 11 mai 2015 à 14:33
A voir également:
- Modifier une chaine de caractère d'un fichier
- Caractère ascii - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Modifier dns - Guide
1 réponse
khalous91
Messages postés
18
Date d'inscription
mercredi 15 avril 2015
Statut
Membre
Dernière intervention
17 juin 2015
11 mai 2015 à 14:33
11 mai 2015 à 14:33
en faite si sa peut vous paraître plus simple, j'ai ce code :
qui lorsque l'on l'exécute nous affiche tout ce qui il y a entre {}
en output j'ai :
toto
etude
SIT
h_sylda
userPath
conf_cu
logName
horodate
Found Index :163
Found Index :707
et moi j'aimerai modifier c'est valeur
j'aimerai en sortie avoir :
a ( qui correspond a toto )
b ( qui correspond a etude )
c ( etc)
d
e
f
h
avez vous une petite idée ? thinks
import java.util.Collection;
import java.util.LinkedHashSet;
public class Extract {
public static void main(String[] args) {
final String ZONE_B = "#>";
final String ZONE_E = "#<";
final String VALUE_B = "{";
final String VALUE_E = "}";
Collection<String> mots = new LinkedHashSet<>(); // si on voulait avoir tous les mots : Collection<String> mots = new ArrayList<>();
String string = "#----------------------------------------------------------------------\n" +
"#{toto}"+
"# Variables\n" +
"#----------------------------------------------------------------------\n" +
"#> should be formatted by calmod_python\n" +
"set conf_etudie = \"{etude}_{SIT}_sylda_{h_sylda}\"\n" +
"set dir_listing = \"{userPath}/{etude}/script/{etude}_{SIT}_sylda_{h_sylda}/{conf_cu}/{logName}/{horodate}/listing\"\n" +
"set dir_tem = \"{userPath}/{etude}/script/{etude}_{SIT}_sylda_{h_sylda}/{conf_cu}/{logName}/{horodate}/temoin\"\n" +
"set dir_res = \"{userPath}/{etude}/script/{etude}_{SIT}_sylda_{h_sylda}/{conf_cu}/{logName}/{horodate}/results\"\n" +
"set dir_UCI_cree = \"{userPath}/{etude}/script/{etude}_{SIT}_sylda_{h_sylda}/{conf_cu}/{logName}/{horodate}/UCI_cree\"\n" +
"#< end the formatted line\n" +
"set fic_tem = calmod.tem\n" +
"#----------------------------------------------------------------------\n";
String[] tab = string.split("\n").clone();
for ( int i = 0; i < tab.length; i++ ) { // on pourrait faire comme ça aussi : for(String line : tab ) {
System.out.println(i + " : " + tab[i]);
int index1 = tab[i].indexOf("{"); // nous donne l'emplacement du premier "{"
while( index1>=0 ) { // tant qu'on trouve une {
int index2 = tab[i].indexOf("}", index1); // on cherche le } qui suit
if ( index2>= 0 ) { // si on trouve un }
// on pourrait tester ici un cas d'erreur si on a 2 { qui se suivent sans } entre :
int index3 = tab[i].lastIndexOf("{", index2); // on cherche le { qui précède le }
if ( index3!=index1 ) { // si ce n'est pas le même que index1, on a forcément { ... { ... }
System.err.println("Problème dans le fichier : { non fermée en " + index1 );
}
String x = tab[i].substring(index1+1, index2); // on extrait le mot trouvé entre { et } // ICI CORRECTION tab[i] à la place de yes et le +1 que j'ai oublié
// System.out.println("x = " + x); // et on l'affiche (ou on le stocke dans une ArrayList pour l'utiliser ailleurs...)
mots.add( x ); // on stocke le mot
}
else {
// on a trouvé un { mais pas de } après : c'est probablement une erreur
System.err.println("Problème dans le fichier : { non fermée en " + index1);
break; // on sort de la boucle, parce que ce n'est pas la peine de continuer de chercher
}
index1 = tab[i].indexOf("{", index2 ); // on cherche le mot suivant dans la ligne
} // fin de la boucle while
} // fin de la boucle for
for(String current : mots) // pour chaque String current dans mots
{
System.out.println(current); // on affiche current
}
// pour trouver les positions #> et #<
System.out.print("Found Index :" );
System.out.println(string.indexOf( "#>" ));
System.out.print("Found Index :" );
System.out.println(string.indexOf( "#<" ));
// pour extraire la chaîne entre la position premier incluse et la position dernier exclue.
int a = string.indexOf("#>");
int b = string.indexOf("#<");
}
}
qui lorsque l'on l'exécute nous affiche tout ce qui il y a entre {}
en output j'ai :
toto
etude
SIT
h_sylda
userPath
conf_cu
logName
horodate
Found Index :163
Found Index :707
et moi j'aimerai modifier c'est valeur
j'aimerai en sortie avoir :
a ( qui correspond a toto )
b ( qui correspond a etude )
c ( etc)
d
e
f
h
avez vous une petite idée ? thinks