Teilzeichenfolge einer Dateinamenspalte zwischen einer unbekannten Anzahl von ZeichenWenn ich Daten eingebe, erhalte ich eine Dateinamenspalte, die folgendermaßen aussieht:
| Dateiname |
| Testname Datum ID# Wafer und Gerät ID1 #ID Kommentar |
| Test Name Datum ID# Wafer und Gerät ID2 #ID unterschiedlich Kommentar |
| Unterschiedlicher Test Name Datum ID# Wafer und Gerät ID1 #ID Kommentar |
| Unterschiedlicher Test Name Datum ID# Wafer und Gerät ID2 #ID unterschiedlich Kommentar |
Was ich will, ist Folgendes:
| Dateiname |
| Wafer- und Geräte-ID1 |
| Wafer- und Geräte-ID2 |
| Wafer- und Geräte-ID1 |
| Wafer- und Geräte-ID2 |
Alle diese haben unterschiedliche Trennzeichen und Zeichenfolgenlängen. Ich möchte die Wafer- und Geräte-ID mit den Zeichen „ID#“ und „#ID“ abzüglich der Leerzeichen extrahieren. Ich finde viele Informationen zum Entfernen einer bestimmten Anzahl von Zeichen, aber ich habe Schwierigkeiten, Informationen zum Suchen einer Zeichenfolge und zum Entfernen einer Zeichenfolge (in diesem Fall „ID#“ und alles davor) von links und einer Zeichenfolge (in diesem Fall „#ID“ und alles danach) von rechts und zum Belassen der Zeichenfolge in der Mitte zu finden.
Vielen Dank im Voraus für Ihre Hilfe.
Erweiterte statistische ModellierungDatenzusammenführung und -bereinigungMassenanpassungQualitäts- und ProzesstechnikBetreff: Teilstring einer Dateinamensspalte zwischen unbekannter Anzahl von ZeichenDie Word()-Funktion kann dies leicht tun.
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 1, :File Name, "#" )
);
Betreff: Teilstring einer Dateinamensspalte zwischen unbekannter Anzahl von ZeichenJim,
Ich habe diese Methode gerade jetzt schon und wieder ausprobiert. Am Ende wird alles nach dem ersten ‚#‘-Zeichen entfernt. Jetzt bekomme ich das für jede Zeile:
Testname Datum ID
Es sieht so aus, als wäre es möglich, munger oder substr zu verwenden, aber ich bekomme das auch nicht zum Laufen.
Betreff: Teilstring einer Dateinamensspalte zwischen unbekannter Anzahl von ZeichenUps .... ändern Sie einfach, um das zweite Wort zu extrahieren
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 2, :File Name, "#" )
);
Bitte nehmen Sie sich die Zeit, die Word()-Funktion im Scripting Index zu lesen.Es wird gezeigt, was jedes Element sein kann, und ein Beispiel dafür, wie es funktioniert.
Betreff: Teilstring einer Dateinamensspalte zwischen unbekannter Anzahl von ZeichenIch liebe es, die Word()-Funktion zu verwenden, wenn die Extraktion einfach ist. Hier ist ein weiterer Ansatz mit der Funktion Regex(). Derselbe Ansatz kann verwendet werden, wenn das Extraktionsmuster nicht einfach ist, indem einfach der reguläre Ausdruck geändert wird.
Names Default to Here( 1 );
// set up example
dt = New Table( "Untitled",
Add Rows( 4 ),
New Column( "File Name",
Character,
"Nominal",
Set Values(
{"Test Name Date ID# Wafer and Device ID1 #ID comment",
"Test Name Date ID# Wafer and Device ID2 #ID different comment",
"Different Test Name Date ID# Wafer and Device ID1 #ID comment",
"Different Test Name Date ID# Wafer and Device ID2 #ID different comment"
}
)
)
);
// make a data column for result
dt << New Column( "Extract", "Character", "Nominal" );
// compute row-wise result
For Each Row(
:Extract = Regex( :File Name, "ID# (.+) #ID", "\1" );
);
Hier ist das Ergebnis:
