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

Langage Perl Discussion :

[langage] Suppression d'espaces avec des expressions regulieres


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Par défaut [langage] Suppression d'espaces avec des expressions regulieres
    Bonjour,

    Il me faudrait quitter le dernier caractere d'une chaine de caractere si celui-ci est un espace, je dois le faire avec une expression reguliere mais je ne sais pas comment le coder.

    Pouvez me dire comment faire???

  2. #2
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    Ca veut dire quoi "quitter un caractère" ?

  3. #3
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Si tu parles d'éliminer les espaces au bout d'un string, voici comment faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $string = "Bonjour espaces      ";
    $string =~ s/\s*$//;
    Pas testé, mais ça devrait fonctionner. Au pire, ça va détruire l'univers.

  4. #4
    Membre expérimenté Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Par défaut
    j'ai testé ton code vince et à priori ma baraque est encore là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $string =~ s/\s$//;
    devrait ne te détruire que le dernier espace ! si c'est ce que tu cherches !

    sinon dérivé de ça tu peux te faire des fonctions

    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
    23
     
    # suppression des espaces en début ET fin de chaine
    sub trim($)
    {
    	my $string = shift;
    	$string =~ s/^\s+//;
    	$string =~ s/\s+$//;
    	return $string;
    }
    # suppression des espaces à gauche de la chaine
    sub ltrim($)
    {
    	my $string = shift;
    	$string =~ s/^\s+//;
    	return $string;
    }
    # suppression des espaces à droite de la chaine
    sub rtrim($)
    {
    	my $string = shift;
    	$string =~ s/\s+$//;
    	return $string;
    }

  5. #5
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    rcageot, un peu de refactoring sur ton code si tu permets:

    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
    23
     
    # suppression des espaces en début ET fin de chaine
    sub trim($)
    {
    	my $string = shift;
    	return ltrim(rtrim($string));
    }
     
    # suppression des espaces à gauche de la chaine
    sub ltrim($)
    {
    	my $string = shift;
    	$string =~ s/^\s*//;
    	return $string;
    }
     
    # suppression des espaces à droite de la chaine
    sub rtrim($)
    {
    	my $string = shift;
    	$string =~ s/\s*$//;
    	return $string;
    }
    ;-)

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    mais pourquoi diable transformer quelquechose qui prend une ligne en un appel de fonction qui donne au finale un truc encore plus long rien que pour l'appeler ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $string = triml($string);
    # 25 chars (plus la definition de la fonction)
     
    $string =~ s/^\s+//;
    # 20 chars
    de plus si je puis moi aussi me permettre qq remarques, la suppression leading et trailing peut sans probleme se faire en une seule regexp : s/^\s+|\s+$//g;
    et de meme il vaut mieux utiliser \s+ que \s*

    hmm desolé si je suis desagreable, j'ai eu une journée chiante...

Discussions similaires

  1. Controle optionnel avec des expressions regulieres
    Par lagdu dans le forum Général Python
    Réponses: 2
    Dernier message: 12/02/2009, 09h56
  2. Réponses: 2
    Dernier message: 12/05/2008, 18h17
  3. [RegEx] probleme avec une expression reguliere
    Par SharKeR dans le forum Langage
    Réponses: 9
    Dernier message: 07/04/2006, 16h50
  4. Réponses: 17
    Dernier message: 16/07/2004, 12h19
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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