Partage
  • Partager sur Facebook
  • Partager sur Twitter

Prendre X lettres sur X

fonction Java

Sujet résolu
    6 janvier 2012 à 22:59:07

    Je cherche présentement une façon de faire une fonction qui me permettrais de prendre X lettre sur Y dans un fichier.

    X et Y représentent deux nombre, qui sont donnés par un mode, ces nombres varient de 1 à 4.

    Voici mon code pour le moment mais sans résultat :
    public static String DecodeFile(File file, short mode) {
    		
    		String gotText;
    		ArrayList ar = new ArrayList();
    		
    		gotText = ReadFile(file);
    		for(int i = 0; i < gotText.length(); i++) {
    			switch(mode)
    			{
    			case ONETWO:
    				for(int j = 0; j < 2; j++) {
    					if(i+1 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+1));
    				}
    				break;
    			case ONETHREE:
    				for(int j = 0; j < 3; j++) {
    					if(i+1 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+1));
    				}
    				break;
    			case ONEFOUR:
    				for(int j = 0; j < 4; j++) {
    					if(i+1 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+1));
    				}	
    				break;
    			case TWOTWO:
    				for(int j = 0; j < 2; j++) {
    					if(i+2 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+2));
    				}	
    				break;
    			case TWOTHREE:
    				for(int j = 0; j < 3; j++) {
    					if(i+2 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+2));
    				}	
    				break;
    			case TWOFOUR:
    				for(int j = 0; j < 4; j++) {
    					if(i+2 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+2));
    				}
    				break;
    			case THREETWO:
    				for(int j = 0; j < 2; j++) {
    					if(i+3 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+3));
    				}
    				break;
    			case THREETHREE:
    				for(int j = 0; j < 3; j++) {
    					if(i+3 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+3));
    				}
    				break;
    			case THREEFOUR:
    				for(int j = 0; j < 4; j++) {
    					if(i+3 > 0 && j == 1)
    						ar.add(gotText.substring(i, i+3));
    				}
    				break;
    			default:
    				ar.add(gotText.charAt(i));
    				break;
    			}
    		}
    		
    		return ar.toString().replaceAll(", ", "").replace("[", "").replace("]", "");
    	}
    


    Les modes "ONETWO", "ONETHREE", "ONEFOUR", "TWOTWO", ect. représentent les modes (en anglais) donc "ONETWO" représente "ONE"(une) lettre sur "TWO"(deux) à prendre.

    par défaut, ("default:") la fonction prend toutes les lettres du fichier

    Si quelqu'un peut m'aider à faire une fonction alors merci ^^
    • Partager sur Facebook
    • Partager sur Twitter
      7 janvier 2012 à 16:09:33

      Bien que je ne sois pas un as des expressions régulières, je pense qu'elles peuvent d'aider.
      Par exemple pour récupérer des groupes de 2 caractères (espace compris):
      Pattern p = Pattern.compile(".{2}"); // sinon ("\\w{2}") pour les lettres seulements
      Matcher m = p.matcher("Fais des groupes de deux caractères");
      while(m.find()){
      	System.out.println(m.group());
      }
      


      Tu peux ajouter une condition dans la boucle while afin de prélever un groupe sur deux.
      Pattern p = Pattern.compile(".{2}");
      Matcher m = p.matcher("Fais des groupes de deux caractères");
      int j = 0;
      while(m.find()){
      	if(0 == j){
      		System.out.println(m.group());
      		j = 1;
      	}else{
      		j--;
      	}
      }
      

      Ne pas oublier d'importer le package
      import java.util.regex.*;
      


      Voilà...
      • Partager sur Facebook
      • Partager sur Twitter
        29 janvier 2012 à 1:13:53

        Super merci ! ça fonctionne parfaitement merci !
        • Partager sur Facebook
        • Partager sur Twitter

        Prendre X lettres sur X

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown