OVH Cloud OVH Cloud

[regex] ajout dans une chaîne

5 réponses
Avatar
SL
J'ai deux chaînes de même longueur, l'une contenant en plus des slashs pour
délimiter les voyelles, l'autre non :

CVC/CVC/VCC
CVZBVsVCC

Je voudrais injecter les slashs de la première dans la seconde, aux mêmes
positions, de façon à obtenir :

CVZ/BVs/VCC

Y a-t-il un moyen avec les expressions rationnelles, ou faut-il en passer
par une boucle (il y a dans les 10 000 chaînes à traiter ainsi, donc la
performance est un critère de choix).

Merci,
SL

5 réponses

Avatar
Jack
Le 15/02/2005 10:11, :
J'ai deux chaînes de même longueur, l'une contenant en plus des slashs pour
délimiter les voyelles, l'autre non :

CVC/CVC/VCC
CVZBVsVCC

Je voudrais injecter les slashs de la première dans la seconde, aux mêmes
positions, de façon à obtenir :

CVZ/BVs/VCC

Y a-t-il un moyen avec les expressions rationnelles, ou faut-il en passer
par une boucle (il y a dans les 10 000 chaînes à traiter ainsi, donc la
performance est un critère de choix).

Merci,
SL


split + re


Avatar
SL
J'ai deux chaînes de même longueur, l'une contenant en plus des slashs
pour


délimiter les voyelles, l'autre non :



C'est bien entendu les syllabes qui sont délimitées

split + re


split me donnera la longueur des sous chaînes, par exemple avec

my @substr = split("/", "CV/CVC/CV");

mais il faudra ensuite jouer de substring avec la chaîne destination. Aucun
moyen d'éviter cela ?


Avatar
Rue des Prairies
J'ai deux chaînes de même longueur, l'une contenant en plus des slashs pour
délimiter les voyelles, l'autre non :

CVC/CVC/VCC
CVZBVsVCC

Je voudrais injecter les slashs de la première dans la seconde, aux mêmes
positions, de façon à obtenir :

CVZ/BVs/VCC

Y a-t-il un moyen avec les expressions rationnelles, ou faut-il en passer
par une boucle (il y a dans les 10 000 chaînes à traiter ainsi, donc la
performance est un critère de choix).

Merci,
SL


Bonjour,


Essaie ceci :

$str1 = 'CVC/CVC/VCC';
$str2 = 'CVZBVsVCC';
$pos=-1;
while(($pos=index($str1,'/',$pos))>-1) {
substr($str2,$pos,0)='/';
$pos++;
}
print $str2;


Olivier.

Avatar
SL
$str1 = 'CVC/CVC/VCC';
$str2 = 'CVZBVsVCC';
$pos=-1;
while(($pos=index($str1,'/',$pos))>-1) {
substr($str2,$pos,0)='/';
$pos++;
}
print $str2;


ok, merci.

Avatar
Jack
Le 15/02/2005 13:57, :
$str1 = 'CVC/CVC/VCC';
$str2 = 'CVZBVsVCC';
$pos=-1;
while(($pos=index($str1,'/',$pos))>-1) {
substr($str2,$pos,0)='/';
$pos++;
}
print $str2;



ok, merci.


Sur cette voie:


my $sep= "";
...

while ($str1 =~ m/$sep/g) {
substr($str2,$-[0],0)=$sep;
}