verifier le 1er char d'une chaine

verifier le 1er char d'une chaine - Perl - Programmation

Marsh Posté le 07-05-2003 à 14:32:15    

bonjour, je voudrais verifier la presence du char "*" dans un chaine en perl.
Pour l'instant je fait :
if (substr($d,0,1) eq "*" ) {$statut=1;}else{$statut=0;}
Non seulement ca ne marche pas mais le résultat semble aléatoire :/
y'as pas un truc simple genre $d[0] =/eq/== '*'/"*"
a l'aide !  

Reply

Marsh Posté le 07-05-2003 à 14:32:15   

Reply

Marsh Posté le 07-05-2003 à 14:40:27    

Si ça:
$taChaine =~ /^*/

Reply

Marsh Posté le 07-05-2003 à 14:40:31    

Et est-ce que ça, ça marche ?
 

Code :
  1. use strict;
  2. my $statut =0;
  3. my $chaine = '*efoinsdoifnsdoinfosndf';
  4. if ($chaine =~ /^\*.*/) {
  5.     $statut = 1;
  6. }


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

Marsh Posté le 07-05-2003 à 14:41:03    

grillé de 4 secondes !!!
 
mais j'ai une excuse, j'avais + de trucs à taper !  :D


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

Marsh Posté le 07-05-2003 à 14:47:06    

merci ca rool
dans la foulé :  
- sans tapé 150 lignes de codes comment je recupere la chaine - le '*' ?
- c quoi strict  :sweat:

Reply

Marsh Posté le 07-05-2003 à 14:51:17    

DjobiDjoba a écrit :


- sans tapé 150 lignes de codes comment je recupere la chaine - le '*' ?


fais comme ceci :

Code :
  1. ... ...
  2. if ($chaine =~ /^\*(.*)$/) {
  3.    $statut = 1;
  4.    $chaine_a_recuperer = $1;
  5. }


 
 

DjobiDjoba a écrit :


- c quoi strict  :sweat:  

strict.pm est un module qui permet de programmer + propre. Car en Perl, c'est vite fait de faire bugger un prog juste pour une malheureuse faute de frappe. Exemple, tu bosses avec une variable $toto et puis à un moment, tu tapes $totto, "use strict;" t'oblige à déclarer tes variables. En déclarant $toto en faisant "my $toto;", tu te feras jeter à la compilation si tu utilises une variable n'existant pas.


Message édité par Aricoh le 07-05-2003 à 14:53:05

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

Marsh Posté le 07-05-2003 à 14:54:31    

alors
( $ce_que_tu_veux_recuperer)  = ( $taChaine =~ /^\*(.*)/s );
 
et strict c'est pour pas coder comme un cochon ...
 
ps pour aricoh: moi j'ai oublié le \, je prends 10 secs de penalités :)
ps 2: la revanche de 3min 14 secondes ( ouais je faisais autre chose en meme temps)


Message édité par anapajari le 07-05-2003 à 15:00:18
Reply

Marsh Posté le 07-05-2003 à 15:02:38    

merci pour vos réponses !


Message édité par djobidjoba le 07-05-2003 à 15:02:49
Reply

Marsh Posté le 07-05-2003 à 15:39:48    

héhé me r'voila :)
 
un vieux truc zarbi  
 
comme ca :  
 

Code :
  1. $d =~ tr/a-z/A-Z/;
  2. $statut =0;
  3. if ($d =~ /^\*(.*)/) {
  4. $statut = 1;
  5. $d=$1;
  6. }


ca fait un truc zarb : l'*' est bien enlevé mais le statut n'est pas mise a jour
 
par contre comme ca :  
 

Code :
  1. $d =~ tr/a-z/A-Z/;
  2. $statut =0;
  3. $dd=$d;
  4. if ($d =~ /^\*(.*)/) {
  5. $statut = 1;
  6. $dd=$1;
  7. }


 
là ca marche  :sweat:
y'aurais un histoire de pointeur la d'sous que ca m'etonnerais pas !
j'vais m'renseigner sur l'utilisation de "use strict" je crois ...


Message édité par djobidjoba le 07-05-2003 à 15:43:06
Reply

Marsh Posté le 07-05-2003 à 15:42:47    

:??: voilà un truc que je ne m'explique pas
 
pourtant, le test du if est VRAI, il devrait donc passer à 1 le contenu de ton $statut, je capte pas
 
Edit : dans le bout de code que tu donnes, y a aucun pointeur. Soit tu nous a donné qu'un bout et l'erreur se trouve ailleurs, soit ... ben je sais pas  :heink:


Message édité par Aricoh le 07-05-2003 à 15:43:50

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

Marsh Posté le 07-05-2003 à 15:42:47   

Reply

Marsh Posté le 07-05-2003 à 16:36:56    

j'ai testé ça marche très bien le code Aricoh ... quand tu prints $status il te sort quoi? 0 ou un truc bizarre? $d est-il sur plusieurs lignes?
Aaahh et note bien que si tu as pas d'étoile au début de ta chaine tu ne vas rien récuperer et du coup $statut vaudra toujours 0 ....
 
J'en profite d'ailleurs pour dire :

Code :
  1. plutot que
  2. $d =~ tr/a-z/A-Z/;
  3. je te conseille
  4. $d = uc($d);
  5. mais c'est une question de gout


 
edit: Capello Rulez


Message édité par anapajari le 07-05-2003 à 16:40:36
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed