Zeichenfolge aus Name extrahierenHallo,
Ich möchte eine Datenkette aus einem Namen extrahieren. Die Position der Zeichenfolge variiert im Namen und der Name enthält eine variable Anzahl von Teilzeichenfolgen. Ein Beispiel ist unten gezeigt:
(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
Mich interessieren zwei Teile: eine Zeichenfolge, die den Buchstaben S enthält (also in den Beispielen 15S-40 & 5S-40) UND wenn w nicht vorhanden ist, interessiert mich der numerische Wert.
Ist es möglich, dies mit Standardformelfunktionen zu extrahieren?
Jede Hilfe wäre großartig.
Danke,
Dipesch
Betreff: Zeichenfolge aus Name extrahierenSie haben kein Beispiel für etwas mit einem W darin angegeben, also ist es nicht getestet. Ich denke, das wird deine Probleme lösen:
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);
)
);Betreff: Zeichenfolge aus Name extrahierenMit einem regulären Ausdruck können Sie ein „Leerzeichen“ gefolgt von einigen Zeichen finden, bis Sie ein „S-“ treffen, dann weitere Zeichen, bis Sie das nächste „Leerzeichen“ treffen.
PAT = "(GPN) CI-4/E7/DH-1 15S-40 L1807";
x = Regex(PAT,"\S+(?=S-).* ");
zeigen(x);
Betreff: Zeichenfolge aus Name extrahierenHallo,
Danke für die Antwort.
Leider gibt es keine Gemeinsamkeiten, wo das Wort, das ich extrahieren möchte, in der Zeichenfolge steht - manchmal ist es Position 2, manchmal ist es Position 7!
Grüße,
Dipesch
Betreff: Zeichenfolge aus Name extrahierenEs scheint, dass die Komponente, die Sie entfernen möchten, die vorletzte Gruppierung ist. Wenn dies der Fall ist, wird der folgende Code dies tun. Die Funktion Word() ist eine sehr mächtige Funktion. Seine Dokumentation kann entweder im Scripting Guide oder im Scripting Index gefunden werden
Hilfe==>Bücher==>Scripting Guide
Hilfe==>Scripting Index==>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, " " ) ) );