Page 1 sur 1

ProperCase (vbProperCase en Visual Basic) by PB

Publié : lun. 13/juin/2016 18:36
par falsam
Par PB sur le forum anglophone, ProperCase permet de mettre chaque première lettre de chaque mot d'une phrase en majuscule.

■ Exemples :
charly chaplin devient Charly Chaplin
charLy chaPlin devient Charly Chaplin

Voila une fonction utile pour des applications de saisie d'adresses par exemple.

■ Le code

Code : Tout sélectionner

Procedure.s ProperCase(text$)
  For r=1 To Len(text$)
    pre=Asc(LCase(Mid(text$,r-1,1)))
    cur=Asc(LCase(Mid(text$,r,1)))
    If cur>96 And cur<123 And (r=1 Or pre<97 Or pre>122)
      cur-32
    EndIf
    a$+Chr(cur)
  Next
  ProcedureReturn a$
EndProcedure

Debug ProperCase("charLy chaPlin")
:arrow: Lien d'origine http://www.purebasic.fr/english/viewtop ... 165#p52165

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : lun. 13/juin/2016 19:31
par Zorro
variante probablement plus rapide ;)

Code : Tout sélectionner

Declare.s propercase(text$)


Debug ProperCase("charLy chaPlin juniOr")

Procedure.s ProperCase(text$)
	;by Zorro
	For i=1 to CountString(text$," ")+1
		extrait$=Lcase(StringField(text$,i," "))
		deb$=UCase(left(extrait$,1))
		fin$=right(extrait$,Len(extrait$)-1)
		sort$=sort$+deb$+fin$+" "
	Next i
	ProcedureReturn trim(sort$)
EndProcedure


; 
; Epb 


Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : lun. 13/juin/2016 21:18
par Ar-S
Zorro, tu as oublié d'enlever le dernier espace ^^

Dans la même lignée.

Code : Tout sélectionner

Declare.s ProperCaZ(text$)

Procedure.s ProperCaZ(text$)
  ;by Ar-S
  For i=1 To CountString(text$," ")+1
    mot$ = StringField(text$, i, " ")
    Mot$ = ReplaceString( Left(mot$,1), Left(mot$,1), UCase(Left(mot$,1)) )+Mid(mot$,2,Len(mot$)-1)+" "
    Phrase.s + mot$
  Next
  
  ProcedureReturn Left (Phrase.s,Len(Phrase)-1)
EndProcedure

Debug ProperCaZ("charLy chaPlin juniOr")

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 8:50
par Micoute
non, il aurait plutôt faire ça :

Code : Tout sélectionner

Declare.s propercase(text$)


Debug ProperCase("charLy chaPlin juniOr")

Procedure.s ProperCase(text$)
   ;by Zorro
   For i=1 To CountString(text$," ")+1
      extrait$=LCase(StringField(text$,i," "))
      deb$=UCase(Left(extrait$,1))
      fin$=Right(extrait$,Len(extrait$)-1)
      sort$=sort$+deb$+fin$+" "
   Next i
   ProcedureReturn Left(sort$, Len(sort$) - 1)
EndProcedure

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 9:02
par Zorro
Micoute a écrit :non, il aurait plutôt faire ça :

Code : Tout sélectionner

 ProcedureReturn Left(sort$, Len(sort$) - 1)

:roll: lorsqu'on cherche a corriger quelqu'un autant savoir le faire avec classe ;)

exemple :

non, il aurai plutôt du faire ça :

Code : Tout sélectionner

ProcedureReturn trim(sort$)
c'est quand meme plus, dans le principe , non ?
(mon principe qui consiste a utiliser des fonctions toutes faites de Purbasic ...simplifier au max )

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 9:08
par Marc56
il aurait plutôt dû faire ça
(verbe)
:mrgreen:
et je suis aussi d'accord avec toi, Trimmer, ça va plus vite :)

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 9:09
par Zorro
je ne faisais pas un cours sur l'orthographe
mais sur la programmation , ici on est pas chez Pivot ;)
mon "du" en rouge marque juste son absence dans la Phrase a Micoute

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 9:12
par Marc56
it was a joke :mrgreen:
et j'en fais aussi (des fôtes) et en quantité.
(avec un peu de chance, ça va servir à d'autres) :wink:

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 9:21
par Zorro
bon voici la course finale :

Code : Tout sélectionner

Declare.s propercase_pb(text$)
Declare.s propercase_zorro(text$)
Declare.s propercase_ar_s(text$)


TempsDepart_Pb = ElapsedMilliseconds()  ; Récupère la valeur actuelle
For i=1 to 10000
	ProperCase_pb("charLy chaPlin juniOr")
Next i
TempsEcoule_Pb = ElapsedMilliseconds()-TempsDepart_Pb


TempsDepart_Zorro = ElapsedMilliseconds()  ; Récupère la valeur actuelle
For i=1 to 10000
	ProperCase_zorro("charLy chaPlin juniOr")
Next i
TempsEcoule_Zorro = ElapsedMilliseconds()-TempsDepart_Zorro

TempsDepart_Ar_s = ElapsedMilliseconds()  ; Récupère la valeur actuelle
For i=1 to 10000
	ProperCase_zorro("charLy chaPlin juniOr")
Next i
TempsEcoule_Ar_s = ElapsedMilliseconds()-TempsDepart_Ar_s

; Affichage resultat
debug "by PB :"+str(TempsEcoule_Pb)
debug "by Zorro :"+str(TempsEcoule_Zorro)
debug "by Ar_s :"+str(TempsEcoule_Ar_s)








Procedure.s ProperCase_pb(text$)
	;By Pb
	For r=1 To Len(text$)
		pre=Asc(LCase(Mid(text$,r-1,1)))
		cur=Asc(LCase(Mid(text$,r,1)))
		If cur>96 And cur<123 And (r=1 Or pre<97 Or pre>122)
			cur-32
		EndIf
		a$+Chr(cur)
	Next
	ProcedureReturn a$
EndProcedure

Procedure.s ProperCase_Zorro(text$)
	;by Zorro
	For i=1 to CountString(text$," ")+1
		extrait$=Lcase(StringField(text$,i," "))
		deb$=UCase(left(extrait$,1))
		fin$=right(extrait$,Len(extrait$)-1)
		sort$=sort$+deb$+fin$+" "
	Next i
	ProcedureReturn trim(sort$)
EndProcedure

Procedure.s ProperCase_ar_s(text$)
	;by Ar-S
	For i=1 To CountString(text$," ")+1
		mot$ = StringField(text$, i, " ")
		Mot$ = ReplaceString( Left(mot$,1), Left(mot$,1), UCase(Left(mot$,1)) )+Mid(mot$,2,Len(mot$)-1)+" "
		Phrase.s + mot$
	Next
	
	ProcedureReturn Left (Phrase.s,Len(Phrase)-1)
EndProcedure

; 

; Epb



mais je dois avouer que la methode a Ar-s fini par gagner si on ajoute un zero a la boucle de test
et d'ailleurs, je ne comprends pas trop pourquoi .... 8O
(en fait non , ça depends des moments ... ???)


en tout cas, la version PB est dans les choux :mrgreen: Image

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 9:26
par Kwai chang caine
Je ne connaissais pas ce terme :oops:
Bettement, je confondais entre ProperCase et CamelCase, merci de m'avoir éclairé 8)

@Marc56
Completement hors sujet, mais j'aime bien ton avatar MARC tout dans la sobriété :mrgreen:
En le démontrant sans le montrer, l'on ressent bien que tu veux faire une analogie discrète au psaume 23 de DAVID (pas celui du forum hein !! :mrgreen:) , " l’éternel est mon berger, Il me fait reposer dans de verts pâturages" :D
Tu veux inévitablement mettre en exergue, de par cette couleur représentant habituellement l'espérance, le fait qu'utiliser Purebasic, c'est se déplacer dans un univers de facilité et de bonheur ..
Bravo pour ce message à la fois discret mais non moins fort, que tu fais passer par le biais d'un si petit symbole de quelques mm² 8)

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 9:31
par Zorro
Kwai chang caine a écrit : Completement hors sujet, mais j'aime bien ton avatar MARC tout dans la sobriété :mrgreen:
En le démontrant sans le montrer, l'on ressent bien que tu veux faire une analogie discrète au psaume 23 de DAVID (pas celui du forum hein !! :mrgreen:) , " l’éternel est mon berger, Il me fait reposer dans de verts pâturages" :D
Tu veux inévitablement mettre en exergue, de par cette couleur représentant habituellement l'espérance, le fait qu'utiliser Purebasic, c'est se déplacer dans un univers de facilité et de bonheur ..
Bravo pour ce message à la fois discret mais non moins fort, que tu fais passer par le biais d'un si petit symbole de quelques mm² 8)
Image

I wanna love you
And treat you right
I wanna love you
Every day and every night
Image :)

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 9:58
par Marc56
Kwai chang caine a écrit : @Marc56
Completement hors sujet, mais j'aime bien ton avatar MARC tout dans la sobriété :mrgreen:
En le démontrant sans le montrer, l'on ressent bien que tu veux faire une analogie discrète au psaume 23 de DAVID (pas celui du forum hein !! :mrgreen:) , " l’éternel est mon berger, Il me fait reposer dans de verts pâturages" :D
Tu veux inévitablement mettre en exergue, de par cette couleur représentant habituellement l'espérance, le fait qu'utiliser Purebasic, c'est se déplacer dans un univers de facilité et de bonheur ..
Bravo pour ce message à la fois discret mais non moins fort, que tu fais passer par le biais d'un si petit symbole de quelques mm² 8)
:mrgreen: :mrgreen: :mrgreen:
Ça en dit long sur l'interprétation (souvent totalement erronnée) des œuvres d'art que font les historiens du même métal sur n'importe quel tableau, sculpture après la mort de son auteur. :P

Vérité: Ce carré vert est simplement la couleur du fond de certaines montres LCD. Couleur particulièrement lisible même sans rétro éclairage et couleur que j'ai utilisé pour afficher l'heure sur mon programme :wink:
Comme je suis nul en graphisme, à force de simplifier l'icône, ça s'est reduit à ce carré vert :)
Less is more and small is beautiful

Re: ProperCase (vbProperCase en Visual Basic) by PB

Publié : mar. 14/juin/2016 10:01
par Kwai chang caine
Ouaaaaahhhhh !!!! trop fort !!!! 8O

Tu as raison, ça me fait rire bien souvent, moi qui suis plus cartésien qu'une porte logique AND, de voir des pelos phylosopher des heures sur un point rouge au milieu d'une toile, voir même pas de point rouge du tout :lol:
Je ne sais pas pourquoi, mais la simplicité de ton avatar, m'a fait pensé quelques secondes à eux :wink:

Bon ben on gardera au moins le coté reposant du vert, non ?? :cry: :mrgreen:

@Zorro
Si on m'avait dit qu'un jour je serais obligé de mettre ce que tu écris dans le traducteur anglais/français de GOOGLE 8O le temps changent !!! comme aurait dit Danyel :lol: