Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1185 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [PERL] supression des espaces de début et de fin dans une chaine

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PERL] supression des espaces de début et de fin dans une chaine

n°127203
fabriceMer​c
Posté le 17-04-2002 à 15:32:22  profilanswer
 

hum cela fait 1 journée que je me mets au perl et j'aimerais savoir si comme php ( avec ltrim trim ou chop ) il y a des fontions qui permettent de ne supprimer uniquement les espaces de debut et de fin de chaines ?
(parce chop c'est pas du tout pareil en perl)

mood
Publicité
Posté le 17-04-2002 à 15:32:22  profilanswer
 

n°127209
matafan
Posté le 17-04-2002 à 15:42:10  profilanswer
 

Par exemple :

Code :
  1. $myString =~ s/^\s*(.*)\s*$/$1/


 
Edit : comme on me le fait remarquer plus bas y'avait une ch'tite coquille... J'ai corrigé le "~=" en "=~"

 

[jfdsdjhfuetppo]--Message édité par Matafan--[/jfdsdjhfuetppo]

n°127212
fabriceMer​c
Posté le 17-04-2002 à 15:48:10  profilanswer
 

humm ok

n°127213
Trracer
Posté le 17-04-2002 à 15:50:01  profilanswer
 

Ou en deux fois (peut etre plus rapide a l'execution ? pas de back-reference...)
 
$string =~ s/^\s+//;
$string =~ s/\s+$//;

n°127215
fabriceMer​c
Posté le 17-04-2002 à 15:54:39  profilanswer
 

suaf que je comprend pas bien le  ~  c'est de la négation  sa me pose une erreur.
 
c'était pour la 1ere réponse . la deuxième solution marche très bien merci.

 

[jfdsdjhfuetppo]--Message édité par fabriceMerc--[/jfdsdjhfuetppo]

n°127223
fabriceMer​c
Posté le 17-04-2002 à 16:04:35  profilanswer
 

non en fait c'est juste une erreur de syntaxe de la part de matafan :p  c'est !~ qui revoie la valeur négative de =~ ( et pas ~=)

 

[jfdsdjhfuetppo]--Message édité par fabriceMerc--[/jfdsdjhfuetppo]

n°127224
Trracer
Posté le 17-04-2002 à 16:05:26  profilanswer
 

non matafan c'est trompe ;)
le tilde signal a Perl qu'il doit utiliser la valeur receptrice comme parametre (est-ce comprehensible ?) C'est à dire qu'il va effectuer une operation sur le contenu de $string et stocker le resultat dans $string. C'est l'equivalent (plus ou moins) de $val += 1 qui effectue le meme type d'operation avec des numerique (incrementation dans ce cas).

n°127233
matafan
Posté le 17-04-2002 à 16:12:42  profilanswer
 

Voilà... Ici ça permet de préciser que la substitution (s///) doit se faire sur la varibale $myString. Sinon ce genre d'opérations porte par défaut sur la varibale "spéciale" $_.
 
Donc si vous avez suivi "s/sucks/rulez/" équivaut en fait à "$_ =~ s/sucks/rulez/".

n°127818
cadoudal56
Posté le 18-04-2002 à 13:33:56  profilanswer
 

ah l'embrouille...
le gars il fait du perl depuis une semaine et vous l'embrouillez grave des le debut....
 
bon prenons la variable $string, tu veux enlever les espaces devant et derriere....
 
$string =~ s/^\s+//;  
$string =~ s/\s+$//;
 
=~ cela veut dire si tu trouve un truc qui ressemble a cela tu remplace par....
 
s///; c'est ce qui sers a la substitution
 
s/ici le modele/ici ce que l'on mettra/;
 
le ^ cela veut dire au debut de la variable
le $ (dans le second exemple) veut dire a la fin de la variable
 
le \s+ cela veut dire un ou plusieurs espaces
sinon tu a le \s* qui veut dire au cas ou...
 
\s+ c'est minimum 1 et pas de max
\s* c'est de 0 a pas de maximum, la difference est subtile, mais sers surtout dans les conditions....
 
Maintenant tu veux faire la meme chose mais pour un mot...
genre tu veux remplacer lapin par poule....
 
$string =~ s/lapin/poule/;
 
ceci fonctionnera mais remplacera une seule fois lapin, pas les autres... sans compter qu'il peut y avoir des trucs du style Lapin ou LAPIN et dans ce cas cela ne marchera pas....
 
Pour se sortir de cela tu peux mettre des precisions a la fin....
 
$string =~ /lapin/poule/gis;
 
le gis precise qu'il faut qu'il regarde partout meme si la variable possede plusieurs lignes, qu'il ne fasse pas de difference entre majuscules et minuscules, et surtout qu'il remplace autant de fois qu'il le trouve....
 
perso j'ai mis longtemps avant de bien tout comprendre, le tout c'est de ne pas se decourager et de sans cesse apprendre....
 
Consulte les tutoriaux et achete des bouquins...  
 
@+
cadou

n°127824
Aricoh
gentil mais fo po pousser
Posté le 18-04-2002 à 13:43:59  profilanswer
 

les Regular Expressions (RegExp) en Perl, ça semble vachement compliqué au début, surtout quand on est pas habitué à Unix ou à certains utilitaires comme Vi ou Grep
 
il suffit juste de démarrer doucement, de voir ce que telle expression fait exactement, et développer ensuite. avec l'habitude, ça ira tout seul


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [PERL] supression des espaces de début et de fin dans une chaine

 

Sujets relatifs
[Perl] comment créer un fichier (text) et y ecrire des chaines de cara[PHP] - Supression de fichiers...
[perl] ptit soucis[perl] named pipes
Installation de Perl sous win2k pour stats hl[PHP] Comment mettre une chaine "www.unsite.com" en un lien ?
[perl] howto sockets[XML] et Perl
[PHP]comment insérer du text en début de fichier ?[ perl ] executer un module dans un environemment protégé
Plus de sujets relatifs à : [PERL] supression des espaces de début et de fin dans une chaine


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR