¿Cómo extraer la posición de un carácter en una cadena?Tengo la siguiente columna, que contiene una cadena de caracteres, como punto o carácter (sin número y carácter especial).
Quiero generar una columna que enumere la posición del carácter que no es un punto. Vea un ejemplo a continuación.
¿Hay alguna fórmula o script que pueda usar en JMP?
·cgaagt··a··········· 2,3,4,5,6,7,10
··t·a·············c·· 3,5,19
·····················
Tabla de datosRe: ¿Cómo extraer la posición de un carácter en una cadena?Ampliando @jthi gran solución, creo que la mejor manera de manejar su problema es crear una nueva columna para colocar los resultados.Además, indicó que no solo un "." podría usarse como un carácter especial.Entonces, el JSL a continuación es una fórmula que puede manejar múltiples caracteres especiales y también devuelve los resultados en una nueva columna.Simplemente cree una columna de caracteres y corte y pegue la fórmula en ella.

list_of_chars = Words( :strings, "" );
Substitute Into( list_of_chars, ".", "", "+", "", "/", "" );
charList = As List( Loc Nonmissing( list_of_chars ) );
Substr( Char( charList ), 2, Length( Char( charList ) ) - 2 );
Re: ¿Cómo extraer la posición de un carácter en una cadena?Creo que tendrás que escribirlo.
- Convierta la cadena en una lista con Palabras(cadena, "")
- Reemplace todos los valores que no le interesen con una cadena vacía (valor faltante) usando Sustituir
- Use Loc NonMissing para encontrar índices de valores que no faltan
Names Default To Here(1);
a = "·cgaagt··a···········";
b = "··t·a·············c··";
c = "·····················";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
a = "··t·a·············c··";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
a = "·····················";
list_of_chars = Words(a, "");
Substitute Into(list_of_chars, "·", "");
Show(AsList(Loc Nonmissing(list_of_chars)));
//As List(Loc Nonmissing(list_of_chars)) = {2, 3, 4, 5, 6, 7, 10};
//As List(Loc Nonmissing(list_of_chars)) = {3, 5, 19};
//As List(Loc Nonmissing(list_of_chars)) = {};