Estrai la stringa dal nomeCiao,
Vorrei estrarre una stringa di dati da un nome. La posizione della stringa varia nel nome e il nome ha un numero variabile di sottostringhe al suo interno. Di seguito è mostrato un esempio:
(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
Sono interessato a due parti: una stringa che contiene la lettera S (quindi negli esempi, 15S-40 e 5S-40) E se w non è presente, mi interessa il valore numerico.
È possibile estrarlo utilizzando le funzioni di formula standard?
Qualsiasi aiuto sarebbe grande.
Grazie,
Dipesh
Ri: Estrai la stringa dal nomeSembra che il componente che si desidera eliminare sia il secondo all'ultimo raggruppamento. In tal caso, il codice seguente lo farà. La funzione Word () è una funzione molto potente. La documentazione può essere trovata nella Guida agli script o nell'Indice degli script
Guida ==> Libri ==> Guida agli script
Aiuto ==> Indice degli script ==> 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, " " ) ) );
Ri: Estrai la stringa dal nomeCiao,
Grazie per la risposta.
Sfortunatamente non c'è comunanza in cui la parola che vorrei estrarre sia nella stringa - a volte è posizione 2 a volte è posizione 7!
Saluti,
Dipesh
Ri: Estrai la stringa dal nomeUsando un'espressione regolare puoi abbinare uno 'spazio' seguito da alcuni caratteri fino a quando non colpisci una 'S-', quindi più caratteri fino a quando non colpisci il 'spazio' successivo
PAT = "(GPN) CI-4 / E7 / DH-1 15S-40 L1807";
x = regex (PAT, "\ S + (? = S -). *");
visualizzare (x);
Ri: Estrai la stringa dal nomeNon hai fornito un esempio di qualcosa con una W in modo che non sia testato. Penso che questo risolverà i tuoi problemi:
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);
)
);