Je n'arrive pas a splitter correctement une variable
$var = "Durand Paul";
et je veux splitter le tout pour avoir d'un coté le nom de l'autre le
prenom.
Cependant, ce qui separe les deux mots n'est pas toujours un espace, cela
peut etre 2 espaces ou 3, ou une tabulation, ou plusieurs tabulations.
($p1,$p2) = split(/\t/,$var); # ne fonctionne que pour le cas ou une
tabulation se trouve etre le séparateur.
J'ai essayé de mettre \s comme séparateur, qui comme l'indique le livre que
je possede '\s => Un espace, identique a [ \t\n\r\f ]' mais sans resultat
plus probant.
J'ai essayé aussi via une regexp de remplacer tous ce qui n'est pas un mot
(tabulation, espace) par quelque chose de commun (un espace dans mon cas) :
$var =~ s/\W/ /g;
($p1,$p2) = split(/ /,$var);
le probleme est que les accents et autre trait d'union sont aussi remplacé
par un espace... ca ne va donc pas.
Donc si kkun a une idée, ou peut me mettre sur la bonne voie, je suis
preneur.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Zuckerman
$var = "Durand Paul";
et je veux splitter le tout pour avoir d'un coté le nom de l'autre le prenom. Cependant, ce qui separe les deux mots n'est pas toujours un espace, cela peut etre 2 espaces ou 3, ou une tabulation, ou plusieurs tabulations.
[...]
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre que je possede 's => Un espace, identique a [ tnrf ]' mais sans resultat plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère qui sépare le prénom et le nom n'est pas contenu dans s.
Donc moi je dirais use strict; use warnings;
my $var = "Durand Paul"; my @prenom_nom = split( m{s}, $var ); print join('#', @prenom_nom), "n"; # histoire de montrer que ça marche ;)
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
$var = "Durand Paul";
et je veux splitter le tout pour avoir d'un coté le nom de l'autre le
prenom.
Cependant, ce qui separe les deux mots n'est pas toujours un espace, cela
peut etre 2 espaces ou 3, ou une tabulation, ou plusieurs tabulations.
[...]
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre que
je possede 's => Un espace, identique a [ tnrf ]' mais sans resultat
plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère
qui sépare le prénom et le nom n'est pas contenu dans s.
Donc moi je dirais
use strict;
use warnings;
my $var = "Durand Paul";
my @prenom_nom = split( m{s}, $var );
print join('#', @prenom_nom), "n"; # histoire de montrer que ça marche ;)
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)
et je veux splitter le tout pour avoir d'un coté le nom de l'autre le prenom. Cependant, ce qui separe les deux mots n'est pas toujours un espace, cela peut etre 2 espaces ou 3, ou une tabulation, ou plusieurs tabulations.
[...]
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre que je possede 's => Un espace, identique a [ tnrf ]' mais sans resultat plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère qui sépare le prénom et le nom n'est pas contenu dans s.
Donc moi je dirais use strict; use warnings;
my $var = "Durand Paul"; my @prenom_nom = split( m{s}, $var ); print join('#', @prenom_nom), "n"; # histoire de montrer que ça marche ;)
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
nicolas
Le Tue, 19 Jul 2005 16:44:03 +0200 "Fabrice L." a écrit:
Re bonjour,
Je n'arrive pas a splitter correctement une variable
$var = "Durand Paul";
et je veux splitter le tout pour avoir d'un coté le nom de l'autre le prenom. Cependant, ce qui separe les deux mots n'est pas toujours un espace, cela peut etre 2 espaces ou 3, ou une tabulation, ou plusieurs tabulations.
$var =~ /^(w+)s+(w+)$/; my ($p1,$p2) = ($1,$2);
perldoc perlre
J'espère que ça suffit.
-- nicolas //
Le Tue, 19 Jul 2005 16:44:03 +0200
"Fabrice L." <rafale@altern.org> a écrit:
Re bonjour,
Je n'arrive pas a splitter correctement une variable
$var = "Durand Paul";
et je veux splitter le tout pour avoir d'un coté le nom de l'autre le
prenom.
Cependant, ce qui separe les deux mots n'est pas toujours un espace, cela
peut etre 2 espaces ou 3, ou une tabulation, ou plusieurs tabulations.
Le Tue, 19 Jul 2005 16:44:03 +0200 "Fabrice L." a écrit:
Re bonjour,
Je n'arrive pas a splitter correctement une variable
$var = "Durand Paul";
et je veux splitter le tout pour avoir d'un coté le nom de l'autre le prenom. Cependant, ce qui separe les deux mots n'est pas toujours un espace, cela peut etre 2 espaces ou 3, ou une tabulation, ou plusieurs tabulations.
"Stephane Zuckerman" a écrit dans le message de news:
$var = "Durand Paul"; [...]
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre que
je possede 's => Un espace, identique a [ tnrf ]' mais sans resultat
plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère qui sépare le prénom et le nom n'est pas contenu dans s.
la solution est donc la, le caractere qui separe le nom prénom n'est pas dans s car votre solution fonctionne sur certains couples nom/prenom mais pas sur tous. donc si le caractere qui separe nom prenom, n'est pas un espace, une tabulation mais s'affiche a l'ecran comme un espace, qu'est ce ?
"Stephane Zuckerman" <szuckerm@etu.utc.fr> a écrit dans le message de
news:Pine.OSF.4.58.0507191700340.498189@vega.utc.fr...
$var = "Durand Paul";
[...]
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre
que
je possede 's => Un espace, identique a [ tnrf ]' mais sans
resultat
plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère
qui sépare le prénom et le nom n'est pas contenu dans s.
la solution est donc la, le caractere qui separe le nom prénom n'est pas
dans s car votre solution fonctionne sur certains couples nom/prenom mais
pas sur tous.
donc si le caractere qui separe nom prenom, n'est pas un espace, une
tabulation mais s'affiche a l'ecran comme un espace, qu'est ce ?
"Stephane Zuckerman" a écrit dans le message de news:
$var = "Durand Paul"; [...]
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre que
je possede 's => Un espace, identique a [ tnrf ]' mais sans resultat
plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère qui sépare le prénom et le nom n'est pas contenu dans s.
la solution est donc la, le caractere qui separe le nom prénom n'est pas dans s car votre solution fonctionne sur certains couples nom/prenom mais pas sur tous. donc si le caractere qui separe nom prenom, n'est pas un espace, une tabulation mais s'affiche a l'ecran comme un espace, qu'est ce ?
Stephane Zuckerman
la solution est donc la, le caractere qui separe le nom prénom n'est pas dans s car votre solution fonctionne sur certains couples nom/prenom mais pas sur tous. donc si le caractere qui separe nom prenom, n'est pas un espace, une tabulation mais s'affiche a l'ecran comme un espace, qu'est ce ? Plusieurs espaces ? :-)
Peut-être votre variable contient-elle plusieurs lignes ? (auquel cas il faut rajouter des flags à la fin de la regexp de votre split - 's' je crois).
Bref, peut-être faut-il plutôt faire un
my @nom_prenom = split(s{s+}, $var);
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
la solution est donc la, le caractere qui separe le nom prénom n'est pas
dans s car votre solution fonctionne sur certains couples nom/prenom mais
pas sur tous.
donc si le caractere qui separe nom prenom, n'est pas un espace, une
tabulation mais s'affiche a l'ecran comme un espace, qu'est ce ?
Plusieurs espaces ? :-)
Peut-être votre variable contient-elle plusieurs lignes ? (auquel cas il
faut rajouter des flags à la fin de la regexp de votre split - 's' je
crois).
Bref, peut-être faut-il plutôt faire un
my @nom_prenom = split(s{s+}, $var);
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)
la solution est donc la, le caractere qui separe le nom prénom n'est pas dans s car votre solution fonctionne sur certains couples nom/prenom mais pas sur tous. donc si le caractere qui separe nom prenom, n'est pas un espace, une tabulation mais s'affiche a l'ecran comme un espace, qu'est ce ? Plusieurs espaces ? :-)
Peut-être votre variable contient-elle plusieurs lignes ? (auquel cas il faut rajouter des flags à la fin de la regexp de votre split - 's' je crois).
Bref, peut-être faut-il plutôt faire un
my @nom_prenom = split(s{s+}, $var);
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
Stephane Zuckerman
Bref, peut-être faut-il plutôt faire un
my @nom_prenom = split(s{s+}, $var); Oooops, il fallait lire
my @nom_prenom = split(m{s+}s, $var); Bien sûr. -- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
Bref, peut-être faut-il plutôt faire un
my @nom_prenom = split(s{s+}, $var);
Oooops, il fallait lire
my @nom_prenom = split(m{s+}s, $var);
Bien sûr.
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)
my @nom_prenom = split(s{s+}, $var); Oooops, il fallait lire
my @nom_prenom = split(m{s+}s, $var); Bien sûr. -- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre que je possede 's => Un espace, identique a [ tnrf ]' mais sans resultat plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère qui sépare le prénom et le nom n'est pas contenu dans s. [...]
my $var = "Durand Paul"; my @prenom_nom = split( m{s}, $var );
Mais il peut y avoir un ou plusieurs espaces (ou tabulation, blancs, etc.)... Donc :
my @prenom_nom = split /s+/, $var;
Avec quelques réserves car un nom et un prénom peuvent être composés de plusieurs mots (sans traits d'union) et dans ce cas le split va découper en plus de deux morceaux . Il y a d'ailleurs des cas indécidables même par un humain. Il y a même des pays où la notion de nom et de prénom n'existent pas vraiment...
PS: pour pouvoir utiliser correctement w (et W) avec des accents ou d'autres caractères hors ASCII, il faut utiliser les 'locale' ou unicode. Cf. perldoc perllocale ou perldoc perlunicode.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre que
je possede 's => Un espace, identique a [ tnrf ]' mais sans resultat
plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère
qui sépare le prénom et le nom n'est pas contenu dans s.
[...]
my $var = "Durand Paul";
my @prenom_nom = split( m{s}, $var );
Mais il peut y avoir un ou plusieurs espaces (ou tabulation, blancs,
etc.)... Donc :
my @prenom_nom = split /s+/, $var;
Avec quelques réserves car un nom et un prénom peuvent être composés
de plusieurs mots (sans traits d'union) et dans ce cas le split va
découper en plus de deux morceaux . Il y a d'ailleurs des cas
indécidables même par un humain. Il y a même des pays où la notion de
nom et de prénom n'existent pas vraiment...
PS: pour pouvoir utiliser correctement w (et W) avec des accents ou
d'autres caractères hors ASCII, il faut utiliser les 'locale' ou
unicode. Cf. perldoc perllocale ou perldoc perlunicode.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
J'ai essayé de mettre s comme séparateur, qui comme l'indique le livre que je possede 's => Un espace, identique a [ tnrf ]' mais sans resultat plus probant.
Pourtant c'est exactement cela qu'il faut utiliser. Ou alors, le caractère qui sépare le prénom et le nom n'est pas contenu dans s. [...]
my $var = "Durand Paul"; my @prenom_nom = split( m{s}, $var );
Mais il peut y avoir un ou plusieurs espaces (ou tabulation, blancs, etc.)... Donc :
my @prenom_nom = split /s+/, $var;
Avec quelques réserves car un nom et un prénom peuvent être composés de plusieurs mots (sans traits d'union) et dans ce cas le split va découper en plus de deux morceaux . Il y a d'ailleurs des cas indécidables même par un humain. Il y a même des pays où la notion de nom et de prénom n'existent pas vraiment...
PS: pour pouvoir utiliser correctement w (et W) avec des accents ou d'autres caractères hors ASCII, il faut utiliser les 'locale' ou unicode. Cf. perldoc perllocale ou perldoc perlunicode.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Fabrice L.
ne fonctionne pas ... erreur 500
my @nom_prenom = split(s{s+}, $var);
et la variable ne fait pas plusieurs lignes, dumoins a l'affichage ecran tout est sur la meme ligne. Chose étonnante, j'ai copié coller le fameux espace tel quel dans le split et ca fonctionne... maintenant quel est ce caractere j'en sais fichtre rien...
Fabrice
ne fonctionne pas ... erreur 500
my @nom_prenom = split(s{s+}, $var);
et la variable ne fait pas plusieurs lignes, dumoins a l'affichage ecran
tout est sur la meme ligne.
Chose étonnante, j'ai copié coller le fameux espace tel quel dans le split
et ca fonctionne... maintenant quel est ce caractere j'en sais fichtre
rien...
et la variable ne fait pas plusieurs lignes, dumoins a l'affichage ecran tout est sur la meme ligne. Chose étonnante, j'ai copié coller le fameux espace tel quel dans le split et ca fonctionne... maintenant quel est ce caractere j'en sais fichtre rien...
et la variable ne fait pas plusieurs lignes, dumoins a l'affichage ecran tout est sur la meme ligne. Chose étonnante, j'ai copié coller le fameux espace tel quel dans le split et ca fonctionne... maintenant quel est ce caractere j'en sais fichtre rien...
s matche tous les blancs ASCII. Peut-être avez-vous un espace insécable codé en ??? (latin1, utf-8, ansinew... selon vos règlages).
Passez la ligne 'bizarre' dans 'od -xc' si vous êtes sur un unix. Ou passez là dans le script suivant :
---------------------------------------- my $var = "ligne bizarre"; # avec un blanc non-identifié
et la variable ne fait pas plusieurs lignes, dumoins a l'affichage ecran
tout est sur la meme ligne.
Chose étonnante, j'ai copié coller le fameux espace tel quel dans le split
et ca fonctionne... maintenant quel est ce caractere j'en sais fichtre
rien...
s matche tous les blancs ASCII. Peut-être avez-vous un espace
insécable codé en ??? (latin1, utf-8, ansinew... selon vos règlages).
Passez la ligne 'bizarre' dans 'od -xc' si vous êtes sur un unix. Ou
passez là dans le script suivant :
----------------------------------------
my $var = "ligne bizarre"; # avec un blanc non-identifié
et la variable ne fait pas plusieurs lignes, dumoins a l'affichage ecran tout est sur la meme ligne. Chose étonnante, j'ai copié coller le fameux espace tel quel dans le split et ca fonctionne... maintenant quel est ce caractere j'en sais fichtre rien...
s matche tous les blancs ASCII. Peut-être avez-vous un espace insécable codé en ??? (latin1, utf-8, ansinew... selon vos règlages).
Passez la ligne 'bizarre' dans 'od -xc' si vous êtes sur un unix. Ou passez là dans le script suivant :
---------------------------------------- my $var = "ligne bizarre"; # avec un blanc non-identifié