IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Replaceall java & operation arithmétique


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 18
    Par défaut Replaceall java & operation arithmétique
    Salut,

    Savez vous comment je peux faire avec replaceall(monexpr,manouvelleexpr) par exemple pour que si
    monexpr="50"
    manouvelleexpr="60" ( j'ajoute +10 (operation arithmétique))

    ?
    thks

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    replaceAll() n'est pas fait pour cela.
    Si tu dois faire une opération arithmétique, il faut que tu convertisses ta chaine en valeur numérique.


    a++

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 18
    Par défaut
    J'ai essayé ça mais ça ne marche pas quelle solution je peux faire poru remplacer le replaceall sinon ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static String modif(String test)
    	{
    		int newchaine = Integer.parseInt(test) + 10;
                    return new String(newchaine);
            }
     
    String ancien="(50)(nano)";
    line.replaceAll(ancien,modif("$1"));

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Pour transformer un int en String il faut utiliser Integer.toString() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static String modif(String test)
    	{
    		int newchaine = Integer.parseInt(test) + 10;
                    return Integer.toString(newchaine);
            }

    a++

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 18
    Par défaut
    Merci.
    Mais ça ne veut pas marcher :-/

    Message d'erreur: Exception in thread "main" java.lang.NumberFormatException: For input string: "$1"
    ça ne prend pas en compte le groupe 1 de la regex

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    C'est normal "$1" n'est pas un nombre entier correct... Tu dois lui passer le nombre à remplacer et non pas "$1".


    Mais je viens juste de comprendre que tu voulais faire un remplacement d'une sous-chaine d'où le replaceAll().

    Dans ce cas il va falloir recoder le replaceAll() car ce dernier est limité et tu ne peux pas faire de transformation sur la chaine.
    Heureusement c'est assez simple et tu peux utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	public interface Replacement {
    		public String replace(MatchResult match);
    	}
     
    	public static String replaceAll(String input, Pattern pattern, Replacement replacement) {
    		Matcher m = pattern.matcher(input);
    		if (m.find()) {
    			// Il y a au moins 1 élément à remplacer
    			// On doit passer par une chaine intermédiaire
    			StringBuffer sb = new StringBuffer(input.length());
    			do {
    				// On remplace chaque élément :
    				String rempl = replacement.replace(m.toMatchResult());
    				m.appendReplacement(sb, rempl);
    			} while (m.find());
    			// On recopie la fin de chaine :
    			m.appendTail(sb);
    			return sb.toString();			
    		}
    		// Sinon il n'y a aucun changement :
    		return input;
    	}
    L'interface Replacement permet de transformer chaque sous-chaine comme bon te semble.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	String ancien="(50)(nano)";
    	String nouveau = replaceAll(ancien, Pattern.compile("\\d+"), new Replacement() {
    		@Override
    		public String replace(MatchResult match) {
    			String value = match.group();
    			int intValue = Integer.parseInt(value);
    			return Integer.toString(intValue + 10);
    		}
    	});
    	System.out.println(nouveau);

    a++

Discussions similaires

  1. [java] Tableau (operation sur les tableaux)
    Par Jessika dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 04/01/2007, 13h40
  2. Réponses: 7
    Dernier message: 11/08/2006, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo