gibet_b a écrit :Bonjour à tous,
Comme je l'ai dit dans un autre sujet, je me frotte à PureBasic, en transposant une petite application que j'ai créé pour aider ma femme à faire des textes à trous.
Je parcours le texte soumis caractère par caractère, et pour détecter s'il s'agit d'un caractère de ponctuation, voilà comment je faisais sous RealBasic :
1/ Je déclarais une constante contenant tous les signes de ponctuation (ou en tout cas ceux qui m'intéressent) :
2/ Je vérifiais si le caractère en cours figurait dans la contante pour savoir si c'était un signe de ponctuation :
Le hic, c'est que certains caractère sont remplacés par des "?" lorsque je copie/colle dans l'EDI de RealBasic. Notamment, une des deux formes d'apostrophe( ’ ), mais aussi les différents tirets ( — et – ) et certaines formes de guillemets( “” ).
hum , d'une façon plus traditionnel de coder (sans RegEx) , la Fonction Findstring() peut etre indiqué pour ce type de recherche
ce code retourne le caractere recherché, ainsi que sa position dans la phrase (ou le Text )
facile a partir de la de coder un "remplacement" (replacestring())
ou bien n'importe quoi d'autre ...
ps: j'ai laissé ta Phrase de caracteres...tel quelle ...
on peut aussi ajouter une contrainte de recherche qu'a partir du Xem caractere du text ..
ça reste tres rapide, meme si c'est pas du Regex ...
pour éviter les "?" compile en Unicode ...
Code : Tout sélectionner
Declare.s recherche_ponctuation(text.s)
text.s=" Toto est (perdu), ou bien 'trouvé' ? "
MessageRequester("info", recherche_ponctuation(text.s))
procedure.s recherche_ponctuation(text.s)
PONCTUATION.s = ". , ; ? ! ( ) ? ? « » ' : - ? ? ? "+chr(34)
for i=1 to len(PONCTUATION.s)
x_car.s=StringField(PONCTUATION.s,i," ")
pos=findstring(text.s,x_car.s,1)
if pos<>0
resultat.s=" le caractere : "+" '"+x_car.s+"' "+ "a été trouvé a la position :"+str(pos)+chr(10)+" Dans la phrase :"+chr(10)+text.s
ProcedureReturn resultat.s
endif
next i
EndProcedure
; EPB