une fonction nom propre en purebasic
une fonction nom propre en purebasic
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.
J'aimerais savoir quelles solutions utiliser avec Purebasic.
Merci de bien vouloir me renseigner.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: une fonction nom propre en purebasic
Bonjour et bienvenue.
■ UCase() & Mid() : Transformer la première lettre en majuscule
■ Split() : Extraction des mots vers une variable tableauC'est un sujet que j'ai abordé sur ce lien
http://www.purebasic.fr/french/viewtopi ... 75#p166475
■ 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
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

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: une fonction nom propre en purebasic
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:
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
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: une fonction nom propre en purebasic
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.
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.
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)
Bonne continuation.
~~~~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
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳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
Re: une fonction nom propre en purebasic
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.
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
Ah mince, fig m'a devancé.
Ce petit code permet d'utiliser les lettres accentuées majuscules et marche en unicode.
M.
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
Re: une fonction nom propre en purebasic
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
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