ProperCase (vbProperCase en Visual Basic) by PB

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

ProperCase (vbProperCase en Visual Basic) by PB

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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 

Dernière modification par Zorro le mar. 14/juin/2016 9:00, modifié 1 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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")
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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 )
Dernière modification par Zorro le mar. 14/juin/2016 9:08, modifié 1 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message par Marc56 »

il aurait plutôt dû faire ça
(verbe)
:mrgreen:
et je suis aussi d'accord avec toi, Trimmer, ça va plus vite :)
Dernière modification par Marc56 le mar. 14/juin/2016 9:10, modifié 1 fois.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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:
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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 :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: ProperCase (vbProperCase en Visual Basic) by PB

Message 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:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre