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 que point ou caractère (pas de nombre et de caractère spécial).
Je veux générer une colonne qui répertorie 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
····················
Tableau de donnéesRe : Comment extraire la position d'un caractère dans une chaîne ?Je pense que vous devrez le scripter.
- Convertissez la chaîne en une 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)) = {};Re : Comment extraire la position d'un caractère dans une chaîne ?Développer 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é que non seulement un "." peut être utilisé comme caractère spécial.Ainsi, le JSL ci-dessous est une formule qui peut 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 et collez la formule dedans.

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 );