Bonjour,
Je souhaiterai manipuler des chaînes de caractères qui contiennent parfois plusieurs espaces entre chaque mot. Exemple :
Il faudrait que j'arrive à une table où, à chaque fois qu'il y a plus d'un espace, il n'en garde qu'un seul entre chaque mot.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 data test1; input lib $50.; cards; avec 10-10 espaces avec 5-2 espaces avec 2-1 espaces avec 2-0espaces avec 1-0espace avec0espace ; run;
Après avoir cherché sur le forum diverses solutions j'ai repéré quelques codes intéressants mais, ne les maîtrisant pas bien, je n'arrive pas à en faire ce que je veux :
1) Ci-dessous j'essaie d'identifier les chaînes de caractères ayant plus de deux caractères "espace" consécutifs. Mais comme il m'identifie toutes mes lignes je suppose que j'ai une erreur quelque part...
2) Ci-dessous j'essaie d'identifier les chaînes de caractères ayant exactement deux espaces consécutifs (mais comme je ne sais pas comment identifier le caractère "espace" avec le like ça ne marche pas )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 data test2 (where=( prxmatch("/\s{2,}/", lib) )); set test1; run;
Pour ces deux codes j'imagine que je ne suis pas très loin d'arriver à ce que je veux mais il me manque néanmoins quelques détails
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 data test3 (where=( lib like '%XX%')); set test1; run;
Si quelqu'un peut m'aider sur ces problèmes (qui m'empêche déjà d'identifier les enregistrements à modifier) je me penche après sur l'histoire du remplacement des espaces multiples par un espace simple
Partager