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???
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???
Si tu parles d'éliminer les espaces au bout d'un string, voici comment faire:
Pas testé, mais ça devrait fonctionner. Au pire, ça va détruire l'univers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my $string = "Bonjour espaces "; $string =~ s/\s*$//;
j'ai testé ton code vince et à priori ma baraque est encore là![]()
devrait ne te détruire que le dernier espace ! si c'est ce que tu cherches !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $string =~ s/\s$//;
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; }
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; }
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 ?!
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;
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
et de meme il vaut mieux utiliser \s+ que \s*
hmm desolé si je suis desagreable, j'ai eu une journée chiante...
Partager