Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.sys.mac.programmation > #2496 > unrolled thread

Re: Verifier la presence d'un mot dans tous les champs

Started by"M.V." <mv@gmail.com.invalid>
First post2023-03-02 09:29 +0000
Last post2023-03-05 16:25 +0000
Articles 20 on this page of 49 — 6 participants

Back to article view | Back to fr.comp.sys.mac.programmation

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-02 09:29 +0000
    Re: Verifier la presence d'un mot dans tous les champs andre_favre@af.invalid (André Favre) - 2023-03-03 10:20 +0100
      Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-03-03 10:02 +0000
    Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.invalid> - 2023-03-03 14:48 +0000
      Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.invalid> - 2023-03-03 15:15 +0000
      Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-03 20:55 +0100
        Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-03 20:01 +0000
          Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-03 21:23 +0100
            Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-03 20:39 +0000
              Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-03 21:49 +0100
                Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-03 21:59 +0100
                  Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-03 21:59 +0000
                    Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-04 00:01 +0100
                      Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-04 00:08 +0100
                        Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-04 00:48 +0000
                          Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-04 10:07 +0100
                            Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-04 11:23 +0000
                Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-03 21:18 +0000
                  Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-03 23:59 +0100
                    Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-04 08:20 +0000
                    Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-04 09:06 +0000
                    Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-04 09:11 +0000
                      Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-04 11:23 +0000
                        Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-03-04 13:49 +0000
                        Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-04 14:41 +0000
                      Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-04 14:32 +0000
                        Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-04 14:41 +0000
                          Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-04 15:12 +0000
                            Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-04 17:42 +0000
                              Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-04 19:05 +0000
                            Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-04 19:16 +0100
                              Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-04 19:01 +0000
                                Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-03-04 19:26 +0000
                                  Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-03-04 19:47 +0000
                                    Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-04 20:40 +0000
                                Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-04 21:34 +0100
                              Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-03-04 19:02 +0000
                                Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-04 21:38 +0100
                              Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-05 09:54 +0000
                                Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-05 12:04 +0100
                                  Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-05 13:18 +0000
                              Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-05 11:29 +0000
                                Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-05 12:36 +0100
                                  Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-05 13:35 +0000
                                    Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-05 14:05 +0000
                                    Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-05 14:06 +0000
                                      Re: Verifier la presence d'un mot dans tous les champs Joseph B <josephb@nowhere.invalid> - 2023-03-05 15:02 +0000
                                        Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-05 16:58 +0100
                                          Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-05 16:25 +0000

Page 1 of 3  [1] 2 3  Next page →


#2496 — Re: Verifier la presence d'un mot dans tous les champs

From"M.V." <mv@gmail.com.invalid>
Date2023-03-02 09:29 +0000
SubjectRe: Verifier la presence d'un mot dans tous les champs
Message-ID<ttpqam$7tm$1@shakotay.alphanet.ch>
Dans le message <ttn9em$h0s$1@shakotay.alphanet.ch>, Benoît L. a écrit le 1er mars 2023 à 11 h 29 :

> _____________________________________________________________
> set TextToTest to "Pour parler à cœur ouvert, je mets une phrase vide,
> cœur à cœur, je mets du cœur à l'ouvrage, même si ce n'est pas de gaieté
> de cœur." as string
>
> set TextToSearch to "cœur"
> set AppleScript's text item delimiters to ","
> set TextAsList to text items of TextToTest
> repeat with i in TextAsList
>   if i does not contain TextToSearch then
>     display dialog "J’ai trouvé un « " & TextToSearch & " » qui manque
>     dans « " & i & " »."
>     exit repeat
>   end if
> end repeat
> set AppleScript's text item delimiters to ""
> _____________________________________________________________

Good mais, à mon sens, il manque quelque chose : si la phrase est 
« valide » (ie il y a le mot « cœur » dans chaque item), le script 
s'arrête et l'utilisateur va se demander si le script a planté ou 
autre chose.
Il faudrait au moins ajouter un avertissement signalant que la 
phrase est « valide » :
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
set laPhrase to "Pour parler à cœur ouvert, cœur à cœur, je mets beaucoup de coeur, même si ce n'est pas de gaieté de cœur." as text

set text item delimiters to ","
set laPhrase to every text item of laPhrase

repeat with text_item in laPhrase
  if "cœur" is not in text_item then
    display alert "La phrase est invalide :" & return & "« cœur » est absent de « " & text_item & " »." giving up after 5
    return
  end if
end repeat
display alert "La phrase est valide." giving up after 4
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

Redirection vers fcsmp
-- 
🇺🇦 Michel Vauquois - <http://michelvauquois.fr> 🇺🇦
Quand un philosophe me répond, je ne comprends plus ma question. (Pierre
Desproges)

[toc] | [next] | [standalone]


#2497

Fromandre_favre@af.invalid (André Favre)
Date2023-03-03 10:20 +0100
Message-ID<1q70i1v.rxsh2abkvlatN%andre_favre@af.invalid>
In reply to#2496
M.V. <mv@gmail.com.invalid> wrote:

> Il faudrait au moins ajouter un avertissement signalant que la 
> phrase est « valide »

Merci bien.

[toc] | [prev] | [next] | [standalone]


#2498

From"Benoît L." <benoit@leraillez.com.invalid>
Date2023-03-03 10:02 +0000
Message-ID<ttsgju$4c5$1@shakotay.alphanet.ch>
In reply to#2497
Le 3 mars 2023 à 10:20, André Favre d'un élan de joie s'exprima ainsi :


> M.V. <mv@gmail.com.invalid> wrote:
>
>> Il faudrait au moins ajouter un avertissement signalant que la 
>> phrase est « valide »
>
> Merci bien.

Une idée comme ça : compter le nombre de phrase et le nombre de celles
qui sont valides. À partir de là, on peut afficher in fine un dialogue
qui dit qu’elles sont toutes valides ou qu’il y en a x sur les y qui ne
le sont pas.

Je dis ça parce qu’un dialogue qui apparaît à chaque test de phrase
c’est vite _hiant. 

-- 
Une relation de moins d’1 mois, c'est pas une "ex", 
c'est un essai gratuit, comme Netflix.  
-+- SLD dans « L’amour : plus ça dure, plus ça coute » -+-

[toc] | [prev] | [next] | [standalone]


#2499

From"M.V." <mv@gmail.invalid>
Date2023-03-03 14:48 +0000
Message-ID<ttt1b6$lk6v$1@dont-email.me>
In reply to#2496
Dans le message <ttpqam$7tm$1@shakotay.alphanet.ch>, j'ai écrit le 2
mars 2023 à 10 h 29 :

> Il faudrait au moins ajouter un avertissement signalant que la 
> phrase est « valide »

Pffftttt… 
Faudrait exactement savoir ce que signifie pour Olivier « le mot cœur
est présent » car le script que j'ai indiqué considère que « De Montcuq
à Moncœur » comme étant valide, ce qui est quand même plutôt contestable.
-- 
🇺🇦 Michel VAUQUOIS 🐸 <http://michelvauquois.fr> 🇺🇦 
Et puis nos coutumes divergent, et divergent c'est énorme. (Pierre Desproges)

[toc] | [prev] | [next] | [standalone]


#2500

From"M.V." <mv@gmail.invalid>
Date2023-03-03 15:15 +0000
Message-ID<ttt2vc$lpku$1@dont-email.me>
In reply to#2499
Dans le message <ttt1b6$lk6v$1@dont-email.me>, j'ai écrit le 3 mars 2023 à 15 h 48 :

> Faudrait exactement savoir ce que signifie pour Olivier « le mot cœur
> est présent » car le script que j'ai indiqué considère que « De Montcuq
> à Moncœur » comme étant valide, ce qui est quand même plutôt contestable.

Ceci devrait aller un peu mieux (j'ai accepté « Cœur » mais c'est facile
à régler si on n'en veut pas) :

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
set laPhrase to "Cœur ouvert, de Montcuq à Montcœur il n'y a qu'un pas, je mets beaucoup de cœur, même si ce n'est pas de gaieté de ccœur." as text

set invalid_count to 0
set invalid_list to {}

set text item delimiters to ","
set laPhrase to every text item of laPhrase
set C to count items of laPhrase

repeat with k from 1 to C
  set item_list to every word of (item k of laPhrase)
  if "cœur" is not in item_list then
    set invalid_count to (invalid_count + 1)
    set invalid_list to invalid_list & (item k of laPhrase)
  end if
end repeat

if invalid_count = 0 then
  display alert "La phrase est valide : le mot « cœur » est présent dans chacun des " & C & " items."
else
  if invalid_count = 1 then
    display alert "Sur " & C & " items, il y en a un seul ne contenant pas le mot « cœur » " & return & "C'est : " & return & tab & "• " & (invalid_list as text)
  else
    set text item delimiters to return & tab & "• "
    display alert "Sur " & C & " items, il y en a " & invalid_count & " ne contenant pas le mot « cœur » " & return & "Ce sont : " & return & tab & "• " & (invalid_list as text)
  end if
end if
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
-- 
🇺🇦 Michel VAUQUOIS 🐸 <http://michelvauquois.fr> 🇺🇦 
Les deux tiers des enfants du monde meurent de faim, alors même que le
troisième tiers crève de son excès de cholestérol. (Pierre Desproges)

[toc] | [prev] | [next] | [standalone]


#2501

FromOlivier Miakinen <om+news@miakinen.net>
Date2023-03-03 20:55 +0100
Message-ID<tttjb9$1ais$1@cabale.usenet-fr.net>
In reply to#2499
Le 03/03/2023 à 15:48, M.V. a écrit :
> 
> Faudrait exactement savoir ce que signifie pour Olivier « le mot cœur
> est présent » car le script que j'ai indiqué considère que « De Montcuq
> à Moncœur » comme étant valide, ce qui est quand même plutôt contestable.

J'avais donné comme exemple la recherche de « cœur » sans préciser,
mais en réalité mon idée était de remplacer cette chaîne fixe par
une regexp quelconque.

Par exemple, pour ne détecter que « cœur » et pas « Moncœur » ni
« cœurs », il me suffisait dans la regexp complète de remplacer
/cœur/ par /\bcœur\b/.

-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#2502

From"M.V." <mv@gmail.com.invalid>
Date2023-03-03 20:01 +0000
Message-ID<tttjmb$5hk$1@shakotay.alphanet.ch>
In reply to#2501
Dans le message <tttjb9$1ais$1@cabale.usenet-fr.net>, Olivier Miakinen a
écrit le 3 mars 2023 à 20 h 55 :

> J'avais donné comme exemple la recherche de « cœur » sans préciser,
> mais en réalité mon idée était de remplacer cette chaîne fixe par
> une regexp quelconque.

Ça correspond à ce que j'imaginais et donc le script AS précédent ne
fonctionnait pas ! Celui que j'ai pondu dans
<news:ttt2vc$lpku$1@dont-email.me> irait beaucoup mieux. 

Et ta recherche fait le distingo entre « cœur » et « Cœur » ?
-- 
🇺🇦 Michel Vauquois - <http://michelvauquois.fr> 🇺🇦
L’erreur judiciaire est le plus sûr allié de la justice d’exception. Combien
d’innocents courraient encore, s’il n’y avait pas d’erreurs judiciaires ?
(Pierre Desproges)

[toc] | [prev] | [next] | [standalone]


#2503

FromOlivier Miakinen <om+news@miakinen.net>
Date2023-03-03 21:23 +0100
Message-ID<tttl0q$1asu$1@cabale.usenet-fr.net>
In reply to#2502
Le 03/03/2023 à 21:01, M.V. a écrit :
> 
>> J'avais donné comme exemple la recherche de « cœur » sans préciser,
>> mais en réalité mon idée était de remplacer cette chaîne fixe par
>> une regexp quelconque.
> 
> Ça correspond à ce que j'imaginais et donc le script AS précédent ne
> fonctionnait pas ! Celui que j'ai pondu dans
> <news:ttt2vc$lpku$1@dont-email.me> irait beaucoup mieux. 

Je ne sais pas si la construction que tu utilises, à savoir « if "cœur"
is not in item_list », utilise une comparaison de chaîne fixe ou bien
une regexp.

Dans le second cas, alors peut-être que ton script fait aussi bien
que la regexp /(^|,)((?!cœur).)*(,|$)/ ; dans le premier cas, non.

Par exemple, je pourrais remplacer « cœur » par « [a-z]{7}(xx|yyy) »
ou n'importe quelle autre regexp.

> Et ta recherche fait le distingo entre « cœur » et « Cœur » ?

Pour une recherche indépendante de la casse il me suffit d'ajouter
un i après le dernier /, donc : /(^|,)((?!cœur).)*(,|$)/i

Il y a aussi moyen de faire en sorte qu'une partie de la regexp soit
indépendante de la casse et qu'une autre partie ne le soit pas. Mais
ça, ce serait plus en charte sur fcl.regexp qu'ici.


-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#2504

From"M.V." <mv@gmail.com.invalid>
Date2023-03-03 20:39 +0000
Message-ID<tttltt$elj$1@shakotay.alphanet.ch>
In reply to#2503
Dans le message <tttl0q$1asu$1@cabale.usenet-fr.net>, Olivier Miakinen a
écrit le 3 mars 2023 à 21 h 23 :

> Je ne sais pas si la construction que tu utilises, à savoir « if "cœur"
> is not in item_list », utilise une comparaison de chaîne fixe ou bien
> une regexp.

La séquence de mon script peut se traduire par : « si "cœur" n'est pas
un des mots de l'item sélectionné alors… »

Par exemple :
- "cœur" est-il un des mots de « je mets beaucoup de cœur dans ce
travail » : la réponse du script est OUI
- "cœur" est-il un des mots de « même si ce n'est pas de gaieté de
ccœur. » : le script répond NON

> Dans le second cas, alors peut-être que ton script fait aussi bien
> que la regexp /(^|,)((?!cœur).)*(,|$)/ ; dans le premier cas, non.

Je ne sais pas… je ne comprends rien à regexp : un truc qui manque
énormément à mon petit bagage !
-- 
🇺🇦 Michel Vauquois - <http://michelvauquois.fr> 🇺🇦
La caractéristique vestimentaire du con consiste en un besoin irrésistible de
s'habiller comme tout le monde. (Pierre Desproges)

[toc] | [prev] | [next] | [standalone]


#2505

FromOlivier Miakinen <om+news@miakinen.net>
Date2023-03-03 21:49 +0100
Message-ID<tttmh9$1caj$1@cabale.usenet-fr.net>
In reply to#2504
Le 03/03/2023 à 21:39, M.V. a écrit :
> 
> Je ne sais pas… je ne comprends rien à regexp : un truc qui manque
> énormément à mon petit bagage !

Eh bien par exemple la regexp "[a-z] [0-9]" permet de détecter une
chaîne contenant une lettre minuscule sans accent, n'importe laquelle,
suivie d'une espace, suivie d'un chiffre, n'importe lequel.

Ainsi cela répondra oui à "toto 55" parce qu'il y a "o 5" dedans,
mais non à "55 toto".


-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#2506

FromOlivier Miakinen <om+news@miakinen.net>
Date2023-03-03 21:59 +0100
Message-ID<tttn40$1ci2$1@cabale.usenet-fr.net>
In reply to#2505
Le 03/03/2023 à 21:49, je répondais à M.V. :
>> 
>> Je ne sais pas… je ne comprends rien à regexp : un truc qui manque
>> énormément à mon petit bagage !
> 
> Eh bien par exemple la regexp "[a-z] [0-9]" permet de détecter une
> chaîne contenant une lettre minuscule sans accent, n'importe laquelle,
> suivie d'une espace, suivie d'un chiffre, n'importe lequel.
> 
> Ainsi cela répondra oui à "toto 55" parce qu'il y a "o 5" dedans,
> mais non à "55 toto".

Après une recherche rapide sur la toile, j'ai l'impression que c'était
mort dès le départ pour faire ce que je voulais en Applescript :

<https://discussions.apple.com/thread/5740773?answerId=24357283022#24357283022>
§
AppleScript does not support regular expressions in text comparisons -
at least not without third-party support [...]
§


-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#2508

From"M.V." <mv@gmail.com.invalid>
Date2023-03-03 21:59 +0000
Message-ID<tttqk8$40b$1@shakotay.alphanet.ch>
In reply to#2506
Dans le message <tttn40$1ci2$1@cabale.usenet-fr.net>, Olivier Miakinen a
écrit le 3 mars 2023 à 21 h 59 :

> Après une recherche rapide sur la toile, j'ai l'impression que c'était
> mort dès le départ pour faire ce que je voulais en Applescript

Tu voulais vraiment quelque chose en AS alors que tu n'es pas sur Mac ?
Tu voulais faire quoi exactement ?
-- 
🇺🇦 Michel Vauquois - <http://michelvauquois.fr> 🇺🇦
Je suis un gaucher contrariant. C'est plus fort que moi. Il faut que j'emmerde
les droitiers. (Pierre Desproges)

[toc] | [prev] | [next] | [standalone]


#2510

FromOlivier Miakinen <om+news@miakinen.net>
Date2023-03-04 00:01 +0100
Message-ID<tttu8a$1dv4$2@cabale.usenet-fr.net>
In reply to#2508
Le 03/03/2023 à 22:59, M.V. a écrit :
> 
>> Après une recherche rapide sur la toile, j'ai l'impression que c'était
>> mort dès le départ pour faire ce que je voulais en Applescript
> 
> Tu voulais vraiment quelque chose en AS alors que tu n'es pas sur Mac ?

Non, pas du tout. Je voulais une regexp. C'est Benoît L. qui a dit qu'il
pouvait le faire en AS, et André Favre qui a demandé sa solution.

> Tu voulais faire quoi exactement ?

Ça : /(^|,)((?!cœur).)*(,|$)/


-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#2511

FromOlivier Miakinen <om+news@miakinen.net>
Date2023-03-04 00:08 +0100
Message-ID<tttum3$1e38$1@cabale.usenet-fr.net>
In reply to#2510
Le 04/03/2023 à 00:01, j'ai répondu un peu vite à M.V. avant de
comprendre vraiment quelle était sa question :
>> 
>>> Après une recherche rapide sur la toile, j'ai l'impression que c'était
>>> mort dès le départ pour faire ce que je voulais en Applescript
>> 
>> Tu voulais vraiment quelque chose en AS alors que tu n'es pas sur Mac ?

Alors non, mais c'est vrai que ma phrase pouvait prêter à confusion.

J'aurais dû la formuler de la façon suivante :
« Après une recherche rapide sur la toile, j'ai l'impression que c'était
mort dès le départ, si on avait voulu faire en AppleScript ce que je
voulais faire avec une regexp ».

Désolé pour le quiproquo.

-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#2512

FromJoseph B <josephb@nowhere.invalid>
Date2023-03-04 00:48 +0000
Message-ID<ttu4gu$o0i$1@shakotay.alphanet.ch>
In reply to#2511
Olivier Miakinen, le 4 mars 2023 à 00:08 dans
<news:tttum3$1e38$1@cabale.usenet-fr.net> écrivait :

> J'aurais dû la formuler de la façon suivante :
> « Après une recherche rapide sur la toile, j'ai l'impression que c'était
> mort dès le départ, si on avait voulu faire en AppleScript ce que je
> voulais faire avec une regexp ».

Absolument. Applescript est pensé pour manipuler les listes, voire les
matrices, mais très limité au niveau de la manipulation des chaines de
texte, dont tu as dû te rendre compte que pour ce faire on en vient à
traiter des listes d'items.
Applescript ne sait pas manipuler les regex, sauf à écrire la règle dans
une commande shell qui sera exécutée par l'appel «do shell script
"blablabla"»

Quant aux manipulations de nombres dans l'exemple que tu donnes, ça
pourrait être un peu mieux, Applescript supportant la "coercition" d'une
chaine de caractères numériques en réel ou en entier.

Malheureusement, là où ça se complique c'est que le langage va regarder
dans les préférences de langage du Système quel est le séparateur
décimal en vigueur.
Si mon Mac est configuré anglais ou allemand, par exemple, la
proposition
«class of ("+1.5" as number) = real» va répondre true
mais sur un Mac réglé francophone va générer l'erreur -1700
“error "Impossible de convertir \"+1.5\" en type number."

Pour un script à exécuter sur un Mac "français" la bonne syntaxe serait
«class of ("+1,5" as number) = real» ––> true

Histoire de ne pas simplifier les choses au décours d'un script, même en
Système "français", tous les /nombres réels/ sont présentés avec le
point comme séparateur décimal (sauf réglage spécial de l'utilisateur)

Je donne l'exemple ubuesque suivant mais bien réel

set z to "+1,5" # si je mets "1.5" la ligne suivante génèrera une erreur
get (z as number) + 2.3 # si je mets 2,3 j'aurai un refus de compilation

result : 3.8

get (("+1,5" as number) + 2.3) as string

result "3,8"

Pour un francophone écrire un applescript "universel" comportant des
valeurs numériques entrées en variable texte, oblige à des contorsions
indignes d'un langage de programmation qui se veut portable sur toutes
les options de langue possibles de l'OS. 
Après ça, ne pas s'étonner qu'Applescript, malgré de très bonne choses
dont la programmation orientée objet, soit quelque peu méprisé par les
habitués des langages historiques, du Pascal au C, ou même Python, etc.

-- 
 J.B.
Encoder l'anti-écho à court rayon d'action est illogique, puisque le filtre à
grand rayon d'action va neutraliser le spouniseur gravifique.

[toc] | [prev] | [next] | [standalone]


#2515

FromOlivier Miakinen <om+news@miakinen.net>
Date2023-03-04 10:07 +0100
Message-ID<ttv1p1$1r02$1@cabale.usenet-fr.net>
In reply to#2512
Le 04/03/2023 à 01:48, Joseph B a écrit (à propos de Mac en français) :
> 
> Je donne l'exemple ubuesque suivant mais bien réel
> 
> set z to "+1,5" # si je mets "1.5" la ligne suivante génèrera une erreur
> get (z as number) + 2.3 # si je mets 2,3 j'aurai un refus de compilation

Oh !

> [...]
> Après ça, ne pas s'étonner qu'Applescript, malgré de très bonne choses
> dont la programmation orientée objet, soit quelque peu méprisé par les
> habitués des langages historiques, du Pascal au C, ou même Python, etc.

En effet. Merci de ta réponse. Merci aussi à M.V., je ne fais pas une
réponse séparée mais j'ai bien lu ton dernier article.

-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#2517

FromJoseph B <josephb@nowhere.invalid>
Date2023-03-04 11:23 +0000
Message-ID<ttv9nu$fu$1@shakotay.alphanet.ch>
In reply to#2515
Olivier Miakinen, le 4 mars 2023 à 10:07 dans
<news:ttv1p1$1r02$1@cabale.usenet-fr.net> écrivait :

> En effet. Merci de ta réponse.
Pour pimenter le propos, une petite démo en réponse à M.V. ;-)

-- 
 J.B.
CS: Oui mais alors moi je me construis une souris avec autant de boutons
  : qu'applis et je fais des racourcis, rena ! :-)
LP: Ah oui, mais alors là il va falloir acheter des doigts, rerena! ;-p
-+- LP in Guide du Macounet Pervers : Vous m'en mettrez une poignée -+-

[toc] | [prev] | [next] | [standalone]


#2507

From"M.V." <mv@gmail.com.invalid>
Date2023-03-03 21:18 +0000
Message-ID<ttto6k$p6b$1@shakotay.alphanet.ch>
In reply to#2505
Dans le message <tttmh9$1caj$1@cabale.usenet-fr.net>, Olivier Miakinen a
écrit le 3 mars 2023 à 21 h 49 :

> Eh bien par exemple la regexp "[a-z] [0-9]" permet de détecter une
> chaîne contenant une lettre minuscule sans accent, n'importe laquelle,
> suivie d'une espace, suivie d'un chiffre, n'importe lequel.
>
> Ainsi cela répondra oui à "toto 55" parce qu'il y a "o 5" dedans,
> mais non à "55 toto".

OK, je vois.
C'est un tout petit moins simple en AppleScript mais ça se fait quand
même très bien : prendre le 1er caractère de l'expression à tester,
regarder s'il est dans [a-z], si oui regarder s'il est suivi d'une
espace et si oui encore regarder si celle-ci est suivie par un chiffre
entre 0 et 9. 
Si la réponse est NON à un des 3 critères alors passer au 2ème caractère
de l'expression à tester, regarder s'il est dans [a-z], si oui regarder
etc.

Ça semble long quand on l'explicite mais un script fait ça en quelques
millièmes de seconde pour une expression moins longue qu'un roman avec
la chaine valide à la page 859 !
-- 
🇺🇦 Michel Vauquois - <http://michelvauquois.fr> 🇺🇦
Existe-t-il au monde un privilège plus totalement exorbitant que la beauté ?
(Pierre Desproges)

[toc] | [prev] | [next] | [standalone]


#2509

FromOlivier Miakinen <om+news@miakinen.net>
Date2023-03-03 23:59 +0100
Message-ID<tttu3m$1dv4$1@cabale.usenet-fr.net>
In reply to#2507
Le 03/03/2023 à 22:18, M.V. a écrit :
> 
>> Eh bien par exemple la regexp "[a-z] [0-9]" permet de détecter une
>> chaîne contenant une lettre minuscule sans accent, n'importe laquelle,
>> suivie d'une espace, suivie d'un chiffre, n'importe lequel.
>>
>> Ainsi cela répondra oui à "toto 55" parce qu'il y a "o 5" dedans,
>> mais non à "55 toto".
> 
> OK, je vois.

Oui, mais c'était un exemple tout simple.

> C'est un tout petit moins simple en AppleScript mais ça se fait quand
> même très bien : prendre le 1er caractère de l'expression à tester,
> regarder s'il est dans [a-z], si oui regarder s'il est suivi d'une
> espace et si oui encore regarder si celle-ci est suivie par un chiffre
> entre 0 et 9. 
> Si la réponse est NON à un des 3 critères alors passer au 2ème caractère
> de l'expression à tester, regarder s'il est dans [a-z], si oui regarder
> etc.
> 
> Ça semble long quand on l'explicite mais un script fait ça en quelques
> millièmes de seconde pour une expression moins longue qu'un roman avec
> la chaine valide à la page 859 !

Alors prenons un autre exemple.

Comment écrirais-tu un programme capable de détecter si une chaîne de
caractères est un nombre en virgule flottante ?

Voici quelques exemples de nombres valides :
"0"
"+1.5"
"1e+99"
"-19E-7"
"1.7e003"
".3"

Et voici quelques exemples non valides :
""
"1.2.3"
"1E3.4"
"--1"
"e+99"
"."
"+1e"

Avec les regexp, le programme est par exemple :
/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/

-- 
Olivier Miakinen

[toc] | [prev] | [next] | [standalone]


#2513

From"M.V." <mv@gmail.com.invalid>
Date2023-03-04 08:20 +0000
Message-ID<ttuuvu$hhg$1@shakotay.alphanet.ch>
In reply to#2509
Dans le message <tttu3m$1dv4$1@cabale.usenet-fr.net>, Olivier Miakinen a
écrit le 3 mars 2023 à 23 h 59 :

> Comment écrirais-tu un programme capable de détecter si une chaîne de
> caractères est un nombre en virgule flottante ?

Je ne sais pas le faire et, comme expliqué par Joseph-B qui maîtrise
tout ça beaucoup mieux que moi, AppleScript et les nombres, ça ne fait
pas toujours bon ménage : est-ce que faire ce que tu demandes est
possible ? J'ai un doute ! ;-)
-- 
🇺🇦 Michel Vauquois - <http://michelvauquois.fr> 🇺🇦
Vivre la ville en août, vivre la mer en juin, c'est l'ultime aristocratie et la
rare élégance de l'estivant hexagonal. (Pierre Desproges)

[toc] | [prev] | [next] | [standalone]


Page 1 of 3  [1] 2 3  Next page →

Back to top | Article view | fr.comp.sys.mac.programmation


csiph-web