Extraire la chaîne du nomSalut,
Je voudrais extraire une chaîne de données d'un nom. La position de la chaîne varie dans le nom et le nom contient un nombre variable de sous-chaînes. Un exemple est présenté ci-dessous :
(GPN) CI-4/E7/DH-1 15S-40 L1807
DEO (GPN) JD CI-4/E7/DH-1 5S-40 L1807
(GPN)JD CI-4/E7/DH-1 40 L1807
Je m'intéresse à deux parties : une chaîne qui contient la lettre S (donc dans les exemples, 15S-40 & 5S-40) ET si w n'est pas présent, je suis intéressé par la valeur numérique.
Est-il possible d'extraire cela à l'aide de fonctions de formule standard ?
Toute aide est la bienvenue.
Merci,
Dipesh
Re : Extraire la chaîne du nomVous n'avez pas fourni d'exemple de quelque chose contenant un W, donc cela n'a pas été testé. Je pense que cela résoudra vos problèmes :
YourList = {"(GPN) CI-4/E7/DH-1 15S-40 L1807", "DEO (GPN) JD CI-4/E7/DH-1 5S-40 L1807", "(GPN) JD CI-4/E7/DH-1 40 L1807"};
Part1 = Part2 = {};
For(i=1,i<=N items(YourList),i++,
SubWords = Words(YourList[i], " ");
For(k=1,k<=N Items(SubWords),k++,
If(contains(SubWords[k],"S")>0,
Part1[i] = SubWords[k];
k=N Items(SubWords)+1;
)
);
);
For(i=1,i<=N items(Part1),i++,
If(contains(part1[i],"W")==0,
Part2[i] = right(part1[i],2);
)
);Re : Extraire la chaîne du nomEn utilisant une expression régulière, vous pouvez faire correspondre un « espace » suivi de quelques caractères jusqu'à ce que vous atteigniez un « S- », puis d'autres caractères jusqu'à ce que vous atteigniez le prochain « espace »
PAT = "(GPN)CI-4/E7/DH-1 15S-40 L1807" ;
x = regex(PAT,"\S+(?=S-).* ");
montrer(x);
Re : Extraire la chaîne du nomBonjour,
Merci pour la réponse.
Malheureusement, il n'y a aucun point commun là où le mot que je voudrais extraire se trouve dans la chaîne - parfois c'est la position 2, parfois c'est la position 7 !
Salutations,
Dipesh
Re : Extraire la chaîne du nomIl semble que le composant que vous souhaitez supprimer soit l'avant-dernier groupe. Si tel est le cas, le code ci-dessous le fera. La fonction Word() est une fonction très puissante. Sa documentation peut être trouvée dans le Guide de script ou dans l'Index des scripts.
Aide==>Livres==>Guide de script
Aide==>Index des scripts==>Word
Names Default To Here( 1 );
dt = New Table( "test",
New Column( "String",
character,
values(
{"(GPN) CI-4/E7/DH-1 15S-40 L1807", "DEO (GPN) JD CI-4/E7/DH-1 5S-40 L1807",
"(GPN) JD CI-4/E7/DH-1 40 L1807"}
)
)
);
dt << New Column( "Value", character, formula( Word( -2, :String, " " ) ) );