Subcadena de una columna de nombre de archivo entre un número desconocido de caracteresCuando ingreso datos, termino con una columna de nombre de archivo que se ve así:
| Nombre del archivo |
| Nombre de la prueba Fecha ID# ID de oblea y dispositivo1 #ID comentario |
| Nombre de la prueba Fecha ID# ID de oblea y dispositivo2 #ID diferente comentario |
| Nombre de prueba diferente Fecha ID# ID de oblea y dispositivo1 #ID comentario |
| Nombre de prueba diferente Fecha ID# Oblea y dispositivo ID2 #ID comentario diferente |
Lo que quiero es lo siguiente:
| Nombre del archivo |
| ID1 de oblea y dispositivo |
| ID2 de oblea y dispositivo |
| ID1 de oblea y dispositivo |
| ID2 de oblea y dispositivo |
Todos estos tienen diferentes delimitadores y longitudes de cadena, lo que quiero hacer es extraer el ID de la oblea y del dispositivo con los caracteres 'ID#' y '#ID' menos los espacios. Estoy encontrando mucha información sobre cómo sacar una cantidad específica de caracteres, pero me cuesta encontrar información sobre cómo buscar una cadena y eliminar una cadena (en este caso, 'ID#' y todo lo anterior) de la izquierda y una cadena (en este caso, '#ID' y todo lo que sigue) de la derecha y dejar la cadena en el medio.
Gracias de antemano por su ayuda.
Modelado estadístico avanzadoCombinación y limpieza de datosPersonalización masivaIngeniería de Calidad y ProcesosRe: Subcadena de una columna de nombre de archivo entre un número desconocido de caracteresLa función Word() puede hacer esto fácilmente.
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 1, :File Name, "#" )
);
Re: Subcadena de una columna de nombre de archivo entre un número desconocido de caracteresJim,
Intenté este método ya y otra vez hace un momento. Termina eliminando todo después del primer carácter '#'. Así que ahora obtengo esto para cada fila:
Prueba Nombre Fecha ID
Parece que es posible usar munger o substr, pero tampoco estoy haciendo que funcione.
Re: Subcadena de una columna de nombre de archivo entre un número desconocido de caracteresUps... solo cambia para extraer la segunda palabra
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 2, :File Name, "#" )
);
Tómese el tiempo para leer acerca de la función Word() en el índice de secuencias de comandos.Mostrará qué puede ser cada elemento, y un ejemplo de cómo funciona.
Re: Subcadena de una columna de nombre de archivo entre un número desconocido de caracteresMe encanta usar la función Word() cuando la extracción es simple. Aquí hay otro enfoque usando la función Regex(). Se puede usar el mismo enfoque si el patrón de extracción no es simple, simplemente cambiando la expresión regular.
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" );
);
Aquí está el resultado:
