Page 1 sur 2

Acronyme

Publié : mer. 21/août/2019 7:52
par Micoute
Bonjour à tous,

pour ne pas polluer davantage le poste de SPH, je poste ici ma petite procédure Acronyme

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  nCompteur = CountString(sTexte, " ") + 1
  For nIndex = 1 To nCompteur
    If Asc(Left(StringField(sTexte, nIndex, " "),1)) > '@' And 
       Asc(Left(StringField(sTexte, nIndex, " "),1)) < '['
      sMot.s = Left(StringField(sTexte, nIndex, " "),1)
      sResultat.s + sMot
    EndIf
  Next
  ProcedureReturn sResultat
EndProcedure

Re: Acronyme

Publié : mer. 21/août/2019 19:59
par SPH
J'ai essayé mais ca n'a rien affiché :cry:

Re: Acronyme

Publié : mer. 21/août/2019 20:38
par venom
SPH a écrit :J'ai essayé mais ca n'a rien affiché :cry:
As tu ajouté Debug Acronyme("Ton Texte De Test") sous la procédure pour l'appeler ??? :D

Merci Micoute, fonctionne très bien.






@++

Re: Acronyme

Publié : mer. 21/août/2019 21:45
par SPH
venom a écrit :
SPH a écrit :J'ai essayé mais ca n'a rien affiché :cry:
As tu ajouté Debug Acronyme("Ton Texte De Test") sous la procédure pour l'appeler ??? :D

Merci Micoute, fonctionne très bien.






@++
Ba oui mais rien... Bon, je reessaye : ........... Tjr rien

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  nCompteur = CountString(sTexte, " ") + 1
  For nIndex = 1 To nCompteur
    If Asc(Left(StringField(sTexte, nIndex, " "),1)) > '@' And 
       Asc(Left(StringField(sTexte, nIndex, " "),1)) < '['
      sMot.s = Left(StringField(sTexte, nIndex, " "),1)
      sResultat.s + sMot
    EndIf
  Next
  ProcedureReturn sResultat
EndProcedure


Debug Acronyme("je suis super genial")


Re: Acronyme

Publié : mer. 21/août/2019 22:05
par TazNormand
@SPH : normal tu as demandé la procédure sur un texte sans majuscule

Comme ça ça marche mieux :

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  nCompteur = CountString(sTexte, " ") + 1
  For nIndex = 1 To nCompteur
    If (Asc(Left(StringField(sTexte, nIndex, " "),1)) > '@' And
        Asc(Left(StringField(sTexte, nIndex, " "),1)) < '[') Or (Asc(Left(StringField(sTexte, nIndex, " "),1)) > 96 And
          Asc(Left(StringField(sTexte, nIndex, " "),1)) < 123)
      
      sMot.s = Left(StringField(sTexte, nIndex, " "),1)
      sResultat.s + sMot
    EndIf
  Next
  ProcedureReturn sResultat
EndProcedure

Debug Acronyme("je suis super genial")

Re: Acronyme

Publié : mer. 21/août/2019 22:08
par SPH
Donc, c'etait pas de ma faute :P :lol:

Re: Acronyme

Publié : jeu. 22/août/2019 8:21
par venom
Ba je t'ai mis un exemple avec des majuscules exprès. :?






@++

Re: Acronyme

Publié : jeu. 22/août/2019 12:45
par Micoute
Bonjour à tous,

avec ma méthode qui ne fonctionne qu'avec des majuscules, on peut taper "Nouvel Institut National des Jeunes Aveugles",

ça fait "NINJA" et non pas "nindja"

Re: Acronyme

Publié : jeu. 22/août/2019 17:25
par venom
Oui, c'est mieux ainsi. et merci pour l'astuce des '@' et '[' j’ignorais. 8)
Ps: merci aussi pour Acronyme NINJA. Je ne savais pas :lol:






@++

Re: Acronyme

Publié : jeu. 22/août/2019 17:40
par Ar-S
En Mixant le code de taz et le tiens

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  
  T$ = RemoveString(sTexte,"des ",#PB_String_NoCase)
  T$ = RemoveString(T$,"de ",#PB_String_NoCase)
  T$ = RemoveString(T$,"ces ",#PB_String_NoCase)
  T$ = RemoveString(T$,"ce ",#PB_String_NoCase)
  T$ = RemoveString(T$,"les ",#PB_String_NoCase)
  T$ = RemoveString(T$,"le ",#PB_String_NoCase)
  ;(tu ajoutes ce que tu veux)
  
  nCompteur = CountString(T$, " ") + 1
  For nIndex = 1 To nCompteur
    If (Asc(Left(StringField(T$, nIndex, " "),1)) > '@' And
        Asc(Left(StringField(T$, nIndex, " "),1)) < '[') Or (Asc(Left(StringField(T$, nIndex, " "),1)) > 96 And
          Asc(Left(StringField(T$, nIndex, " "),1)) < 123)
     
      sMot.s = Left(StringField(T$, nIndex, " "),1)
      sResultat.s + sMot
    EndIf
  Next
  ProcedureReturn UCase(sResultat)
EndProcedure

Debug Acronyme("Nouvel institut national des jeunes aveugles")

Re: Acronyme

Publié : ven. 23/août/2019 5:25
par SPH
Premiere fois que je vois ca et je ne sais pas ce que ca veux dire :

Code : Tout sélectionner

    If (Asc(Left(StringField(sTexte, nIndex, " "),1)) > '@' And Asc(Left(StringField(sTexte, nIndex, " "),1)) < '[')

    If(Asc(Left(StringField(sTexte, nIndex, " "),1)) > 96 And Asc(Left(StringField(sTexte, nIndex, " "),1)) < 123)
Quelqu'un a une torche ? Enfin,... je veux dire : qqun peux m'eclairer :?:

Re: Acronyme

Publié : ven. 23/août/2019 7:30
par Micoute
@ SPH : pourquoi > '@' et < '[' ? Parce que la valeur Ascii de @, c'est 64 donc inférieure à 65 qui est la valeur de 'A' et idem pour '[' dont la valeur Ascii est 91, donc supérieure à 'Z' qui a la valeur 90.
la ligne suivante reprend le même principe pour les minuscules 'a' .. 'z', 97 .. 122.

Re: Acronyme

Publié : ven. 23/août/2019 8:21
par venom
@SPH
Dans PureBasic fait Alt+A et tu comprendra. :wink:
Le code de Micoute prend uniquement les caractères entre " @ " et " [ " ce qui correspond a l'alphabet en majuscule (voir Alt+A) :D Et je trouve cette astuce sympathique.







@++

Re: Acronyme

Publié : ven. 23/août/2019 20:15
par Itsy Bitsy
Je trouve que cette procedure est un bel exemple technique. 8)

SPH a raison, l’exemple n’est pas compréhensible à la première lecture. 8O

En ajoutant ‘=‘ + l’usage dans une variable cela le devient.

Code : Tout sélectionner

Procedure.s Acronyme(sTexte.s)
  PROTECTED car.c
  
  T$ = RemoveString(sTexte,"des ",#PB_String_NoCase)
  T$ = RemoveString(T$,"de ",#PB_String_NoCase)
  T$ = RemoveString(T$,"ces ",#PB_String_NoCase)
  T$ = RemoveString(T$,"ce ",#PB_String_NoCase)
  T$ = RemoveString(T$,"les ",#PB_String_NoCase)
  T$ = RemoveString(T$,"le ",#PB_String_NoCase)
  T$ = RemoveString(T$,"un ",#PB_String_NoCase)
  T$ = RemoveString(T$,"une ",#PB_String_NoCase)
  ;(tu ajoutes ce que tu veux)
  
  nCompteur = CountString(T$, " ") + 1
  
  For nIndex = 1 To nCompteur
    
    car=Asc(Left(StringField(T$, nIndex, " "),1))
    
    If (car >= 'A' And car =< 'Z') Or (car >= 'a' And car =< 'z')
     
      sMot.s = Left(StringField(T$, nIndex, " "),1)
      
      sResultat.s + sMot
      
    EndIf
    
  Next
  
  ProcedureReturn UCase(sResultat)
  
EndProcedure

Debug Acronyme("Nouvel institut national des jeunes aveugles")

Re: Acronyme

Publié : sam. 24/août/2019 8:47
par Zorro
autre façon ..

Code : Tout sélectionner

Procedure.s Acronyme(Text.s)		
		es=CountString(Text.s," ")+1
		For i=1 to ES 
				mot.s=StringField(text.s,i," ")
				ext.s=left(mot.s,1)
				if len(mot.s)>3
						acro.s=acro.s+ext.s+"."
				Endif				
		Next i		
		ProcedureReturn UCase(acro.s)		
EndProcedure

Debug Acronyme("Nouvel institut national des jeunes aveugles")