Page 1 sur 1
une fonction nom propre en purebasic
Publié : mer. 04/mars/2015 14:33
par yvhon
Purebasic semble être un langage puissant. Mais pour convertir la première lettre de chaque mot d'une phrase en majuscule je n'ai pas trouvé de fonction prévue. Vba Excel a une fonction qui permet faire ça simplement tout comme l'extraction des mots vers une variable tableau, sans se lancer dans les expressions régulières. C'est pourtant un basic très basic.
J'aimerais savoir quelles solutions utiliser avec Purebasic.
Merci de bien vouloir me renseigner.
Re: une fonction nom propre en purebasic
Publié : mer. 04/mars/2015 15:11
par falsam
Bonjour et bienvenue.
■
UCase() &
Mid() : Transformer la première lettre en majuscule
Code : Tout sélectionner
Buffer.s = "une premiere chaine de mot"
;Transformer la premiere lettre en majuscule
Result.s = UCase(Mid(Buffer, 1, 1)) + Mid(Buffer, 2)
Debug Result
■
Split() : Extraction des mots vers une variable tableau
Code : Tout sélectionner
Procedure Split(Array Array.s(1), String.s, Delimiter.s)
Protected File, i, j, Buffer.s
j = CountString(String, Delimiter)
ReDim Array(j)
For i=1 To j+1
Array(i-1) = StringField(String, i, Delimiter)
Next
EndProcedure
;-Zone de test
Dim Jours.s(0)
Split(Jours(), "lundi mardi mercredi jeudi vendredi samedi dimanche", " ")
;Vérification
For n=0 To ArraySize(Jours())
Debug Jours(n)
Next
C'est un sujet que j'ai abordé sur ce lien
http://www.purebasic.fr/french/viewtopi ... 75#p166475
Re: une fonction nom propre en purebasic
Publié : mer. 04/mars/2015 18:27
par Fig
bienvenue Yvhon,
Tu as bien conscience, que même en Vb il n'existe pas une fonction déja toute prête pour toutes les transformations possibles sur une phrase, je suppose.
Pb est beaucoup plus rapide que Vb, mais si tu veux travailler principalement sur du texte, tu devras faire toi même les fonctions avancées que tu souhaites.
Tu souhaites mettre en majuscule chaque première lettre des mots d'une phrase. Voici ma résolution de ce problème:
Code : Tout sélectionner
Macro majuscule(phrase_)
phrase_=UCase(Mid(phrase_, 1, 1)) + Mid(phrase_, 2) ;passe en majuscule la première lettre de la phrase
For i_=97 To 97+25 ;test les lettres de a à z et les passe en majuscule
ReplaceString(phrase_, " "+Chr(i_), " "+Chr(i_-32),#PB_String_InPlace)
Next i_
EndMacro
GrandePhrase.s="ceci est une phrase test"
majuscule(GrandePhrase)
Debug GrandePhrase
Re: une fonction nom propre en purebasic
Publié : mer. 04/mars/2015 19:07
par Ar-S
Salut,
Il y a plusieurs façon de faire ce genre de procédure. Celle de fig met une maj à chaque mot (tout court).
Pour une phrase, tu peux utiliser ça.
Ici on detecte un point + un espace. Il te suffit de faire un 1er scan de ton document et de lister par exemple chaque phrase.
Code : Tout sélectionner
GrandePhrase.s="ceci est une phrase test."
Procedure.s Maj_it(phrase.s)
Res.s = StringField(phrase,1,". ")
LettreMaj.s = UCase( Left(res,1) )
Reste.s = Mid(res,2,Len(res))
Resultat.s = LettreMaj+reste
ProcedureReturn Resultat
EndProcedure
Debug Maj_it(GrandePhrase.s)
Pour être plus propre je t'orienterai plutôt vers les expressions régulières pour détecter les caractères faisant office de fin de phrase.
Bonne continuation.
Re: une fonction nom propre en purebasic
Publié : mer. 04/mars/2015 19:42
par yvhon
Merci pour vos réponses.
la différence entre ReplaceString de Purebasic et Replace de vba me rassure :
Purebasic n'est pas une perte de temps.
Re: une fonction nom propre en purebasic
Publié : jeu. 05/mars/2015 10:15
par Mesa
Ah mince, fig m'a devancé.
Ce petit code permet d'utiliser les lettres accentuées majuscules et marche en unicode.
Code : Tout sélectionner
Buffer.s = "ça, une première chaine de mot"
ReplaceString(Buffer, Left(Buffer,1), UCase(Left(Buffer,1)), #PB_String_InPlace, 1, 1)
Debug Buffer
M.
Re: une fonction nom propre en purebasic
Publié : jeu. 05/mars/2015 10:46
par MLD
Bonjour Yvhon, bienvenue parmis nous.
Contrairement a ce que tu as dit. PB n'est pas un basic "très basic",mais un basic très évolué, bien plus puissant que VBa, et surtout moins usine a gaz.
Une fois compilé, il produit des fichiers EXE trés petits et rapides.
Jette un oeil dans la documentation, et dans le forum Français et US pour te faire une idée.
Avant je programmais en VB6, depuis que j'ai connus PB. Je n'utilise plus que lui avec satisfaction. Si tu achète la licence, ça m'éttonerais beaucoup que tu regrette ton achat.
Salutations
Michel