Comment extraire la position d'un caractère dans une chaîne ?J'ai la colonne suivante, qui contient une chaîne de caractères, telle qu'un point ou un caractère (pas de nombre ni de caractère spécial).
Je souhaite générer une colonne indiquant la position du caractère qui n'est pas un point. Voir un exemple ci-dessous.
Existe-t-il une formule ou un script que je peux utiliser dans JMP ?
·cgaagt··a··········· 2,3,4,5,6,7,10
··t·a············c·· 3,5,19
···················
Modélisation statistique avancéeAutomatisation et scriptsExploration et visualisation des donnéesRe : Comment extraire la position d'un caractère dans une chaîne ?S'étendre sur @jthi excellente solution, je pense que la meilleure façon de gérer votre problème est de créer une nouvelle colonne dans laquelle placer les résultats.De plus, vous avez indiqué qu'il ne s'agissait pas seulement d'un "." peut être utilisé comme caractère spécial.Le JSL ci-dessous est donc une formule capable de gérer plusieurs caractères spéciaux et renvoie également les résultats dans une nouvelle colonne.Créez simplement une colonne de caractères et coupez-collez-y la formule.

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 : Comment extraire la position d'un caractère dans une chaîne ?Je pense que vous devrez le scripter.
- Convertissez la chaîne en liste avec Mots(str, "")
- Remplacez toutes les valeurs qui ne vous intéressent pas par une chaîne vide (valeur manquante) en utilisant Substitute
- Utilisez Loc NonMissing pour trouver des indices de valeurs non manquantes
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)) = {};