Sous-chaîne d'une colonne de nom de fichier entre un nombre inconnu de caractèresLorsque je saisis des données, je me retrouve avec une colonne de nom de fichier qui ressemble à ceci :
| Nom de fichier |
| Nom du test Date ID# ID de la plaquette et du périphérique1 #ID commentaire |
| Nom du test Date ID# ID de la plaquette et du périphérique2 #ID différent commentaire |
| Nom de test différent Date ID# ID de plaquette et d'appareil1 #ID commentaire |
| Nom de test différent Date ID# ID de plaquette et d'appareil2 #ID commentaire différent |
Ce que je veux c'est ceci :
| Nom de fichier |
| ID de la plaquette et du dispositif1 |
| ID de la plaquette et du dispositif2 |
| ID de la plaquette et du dispositif1 |
| ID de la plaquette et du dispositif2 |
Tous ces éléments ont des délimiteurs et des longueurs de chaîne différents. Ce que je veux faire, c'est extraire l'ID de la plaquette et de l'appareil avec les caractères « ID# » et « #ID » moins les espaces. Je trouve beaucoup d'informations sur la suppression d'un nombre spécifique de caractères, mais j'ai du mal à trouver des informations sur la recherche d'une chaîne et la suppression d'une chaîne (dans ce cas, « ID# » et tout ce qui précède) de la gauche et d'une chaîne (dans ce cas, « #ID » et tout ce qui suit) de la droite et en laissant la chaîne au milieu.
Merci d'avance pour votre aide.
Modélisation statistique avancéeFusion et nettoyage des donnéesPersonnalisation de masseIngénierie de la qualité et des procédésRe : Sous-chaîne d'une colonne de nom de fichier entre un nombre inconnu de caractèresLa fonction Word() peut le faire facilement.
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 1, :File Name, "#" )
);
Re : Sous-chaîne d'une colonne de nom de fichier entre un nombre inconnu de caractèresJim,
J'ai essayé cette méthode déjà et encore tout à l'heure. Il finit par supprimer tout après le premier caractère '#'. Alors maintenant, je reçois ceci pour chaque ligne:
Nom du test Date ID
Il semble que cela soit possible en utilisant munger ou substr mais je n'y arrive pas non plus.
Re : Sous-chaîne d'une colonne de nom de fichier entre un nombre inconnu de caractèresOups.... il suffit de changer pour extraire le deuxième mot
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 2, :File Name, "#" )
);
Veuillez prendre le temps de lire à propos de la fonction Word() dans l'Index des scripts.Il montrera ce que chaque élément peut être et un exemple de son fonctionnement.
Re : Sous-chaîne d'une colonne de nom de fichier entre un nombre inconnu de caractèresJ'adore utiliser la fonction Word() lorsque l'extraction est simple. Voici une autre approche utilisant la fonction Regex(). La même approche peut être utilisée si le modèle d'extraction n'est pas simple, simplement en changeant l'expression régulière.
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" );
);
Voici le résultat :
