Aller au menu - Aller au contenu

Icône Jouer avec les mots, les dates

Avatar
Mise à jour : 13/12/2010
Difficulté : Facile Facile Creative Commons BY-NC-SA
23 410 visites depuis 7 jours, dont 529 sur ce chapitre classé 14/786
Vous êtes en mesure d'effectuer des opérations sur les chiffres et les nombres. Mais ne serait-il pas rigolo de faire de même avec les mots ?
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Les chaînes de caractères

Image utilisateur


Remplacer des caractères


On va commencer par la fonction la plus simple : le Replace qui, comme son nom l'indique, permet de remplacer des caractères ou groupes de caractères au sein d'une chaîne.

La syntaxe est la suivante :

Code : VB.NET
1
2
Dim MonString As String = "Phrase de test"
MonString = MonString.Replace("test", "test2")

Le premier argument de cette fonction est le caractère (ou mot) à trouver, et le second, le caractère (ou mot) par lequel le remplacer.
Dans cette phrase, le code remplacera le mot « test » par « test2 ».

Si vous avez bien assimilé le principe des fonctions, des variables peuvent être utilisées à la place des chaînes de caractères en « dur ».

Mettre en majuscules


La fonction ToUpper se rattachant à la chaîne de caractères (considérée comme un objet) en question permet cette conversion.
Elle s'utilise comme suit :

Code : VB.NET
1
2
Dim MonString As String = "Phrase de test"
MonString = MonString.ToUpper()

Cette phrase sera donc mise en MAJUSCULES.

Mettre en minuscules


Cette fonction s'appelle ToLower ; elle effectue la même chose que la précédente, sauf qu'elle permet le formatage du texte en minuscules.

Code : VB.NET
1
2
Dim MonString As String = "Phrase de test"
MonString = MonString.ToLower()

Ces petites fonctions pourront sûrement nous être utiles pour l'un de nos TP. :p

Les dates, le temps

Nous passons donc aux dates et à l'heure. Il s'agit d'un sujet assez sensible puisque, lorsque nous aborderons les bases de données, la syntaxe d'une date et son heure en base de données sera différente de la syntaxe lisible par tout bon francophone (âgé de plus de deux ans).
Traduction : - C'est drôle, c'est ma date d'anniversaire ! - Vraiment ? Comment ça ? C'est la mienne également !

Tout d'abord, pour travailler, nous allons avoir besoin d'une date. Ça vous dirait, la date et l'heure d'aujourd'hui ?

Si cela ne vous dérange pas, nous allons utiliser l'instruction Date.Now , qui nous donne... la date et l'heure d'aujourd'hui, sous la forme suivante :

Code : Console
16/06/2009 21:06:33

La première partie est la date ; la seconde, l'heure.

Nous allons ainsi pouvoir travailler. Entrons cette valeur dans une variable de type... date, et amusons-nous !

Récupérer uniquement la date


La première fonction que je vais vous présenter dans ce chapitre est celle qui convertit une chaîne date, comme celle que je viens de vous présenter, mais uniquement dans sa partie « date ».

Je m'explique : au lieu de « 16/06/2009 21:06:33 » (oui, je sais, il est exactement la même heure qu'il y a deux minutes...), nous obtiendrons « 16/06/2009 ».

Code : VB.NET
1
ToShortDateString()

Cette fonction s'utilise sur une variable de type date. J'ignore si vous vous souvenez de mon petit interlude sur les objets et fonctions, au cours duquel je vous ai expliqué que le point (« . ») servait à « affiner la recherche ». Nous allons donc utiliser ce point pour lier le type (qui est également un objet dans notre cas) et cette fonction.

Cette syntaxe que vous avez, je pense, déjà écrite vous-mêmes (MaVariableDate.ToShortDateString() ), convertit votre date en date sans heure, mais flotte dans les airs... Il faut bien la récupérer, non ? Pour ce faire, affichons-la !

Pour ma part, je me retrouve avec ceci :

Code : VB.NET
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Module Module1

    Sub Main()
        'Initialisation des variables
        Dim MaVariableDate As Date = Date.Now
        'Écriture de la forme courte de la date
        Console.WriteLine(MaVariableDate.ToShortDateString)
        'Pause
        Console.Read()
    End Sub

End Module

Voici le résultat qui est censé s'afficher dans la console :

Code : Console
16/06/2009

Hep, m'sieur ! Je ne comprends pas : j'ai stocké le résultat dans une variable intermédiaire de type date et je n'obtiens pas la même chose que toi !

Ah, l'erreur ! La variable de type date est formatée obligatoirement comme je l'ai montré au début, ce qui veut dire que si vous y entrez par exemple uniquement une heure, elle affichera automatiquement une date.

Comment dois-je faire, dans ce cas ?

Bah, pourquoi ne pas mettre cela dans un string ? (Vous n'aimez pas les string ? :p )

La date avec les libellés


Seconde fonction : récupérer la date avec le jour et le mois écrits en toutes lettres. Rappelez-vous l'école primaire où l'on écrivait chaque matin « mardi 16 juin 2009 » (non, je n'ai jamais écrit cette date à l'école primaire !).

Donc, pour obtenir cela, notre fonction s'intitule ToLongDateString() (je n'ai pas trop cherché :D ).

Le résultat obtenu est Mardi 16 Juin 2009.

L'heure uniquement


Image utilisateur

Voici la fonction qui sert à récupérer uniquement l'heure :

Code : VB.NET
1
ToShortTimeString()

Ce qui nous renvoie ceci :

Code : Console
21:06


L'heure avec les secondes


Même chose qu'au-dessus, sauf que la fonction se nomme :

Code : VB.NET
1
ToLongTimeString()

Cela nous renvoie :

Code : Console
21:06:33

TP sur les heures

Sur ce, j'espère que vous avez bien compris comment manipuler les dates, les heures et les chaînes de caractères.

Nous allons faire un mini-TP.

L'horloge


Eh oui, je ne suis pas allé chercher bien loin : ce TP aura pour but de mettre en œuvre une horloge parlante (heures:minutes:secondes).
Image utilisateur

Heureusement que vous avez lu ce qui est indiqué au-dessus, car vous aurez besoin de la fonction qui renvoie seulement les heures, les minutes et les secondes.

Je ne vais pas vous mâcher tout le travail, parce que vous devenez grands (dans le domaine du Visual Basic, en tous cas ! :D ) ; je vais donc me contenter de vous énumérer les fonctions dont vous aurez besoin pour mener à bien votre travail.

La première fonction consiste à mettre en « pause » le programme pendant une durée passée en argument. Attention : cette valeur s'exprime en millisecondes.

Code : VB.NET
1
System.Threading.Thread.Sleep()

La seconde servira à effacer l'écran de la console ; si vous avez déjà fait du Bash, c'est pareil :

Code : VB.NET
1
Console.Clear()

Avec ces deux fonctions et les connaissances du reste du chapitre, vous devez être capables de réaliser cette horloge.

Non, je ne vous aiderai pas plus !
N'insistez pas ! :o

Vous avez terminé ? Bon, dans ce cas, faisons le compte rendu de ce que nous venons de coder.

Secret (cliquez pour afficher)
Code : VB.NET
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
Module Module1
    Sub Main()
        'Initialisation des variables
        Dim MaVariableDate As Date

        'Boucle infinie /!\
        While 1
            'Récupération de la date actuelle
            MaVariableDate = Date.Now
            'Affichage des heures, minutes, secondes
            Console.WriteLine("----------------")
            Console.WriteLine("--- " & MaVariableDate.ToLongTimeString & " ---")
            Console.WriteLine("----------------")
            'Pause de 1 seconde
            System.Threading.Thread.Sleep(1000)
            'Efface l'écran de la console
            Console.Clear()
        End While
    End Sub
End Module

Je vais vous expliquer mon code.

J'ai tout d'abord déclaré une variable de type date, ce que vous avez également dû faire. Ensuite, j'ai créé une boucle infinie avec un While 1.

Ce n'est pas bien ! C'était nécessaire dans ce cas pour réaliser un TP simple, et parce que le programme n'était censé faire que cela.

Le programme tourne donc jusqu'à ce qu'on l'arrête dans cette boucle.

Pourquoi While 1 ?

Parce que le « 1 » est toujours vrai, cela signifie donc : « Tourne, mon grand, ne t'arrête pas ! »

Au début de cette boucle, je récupère la date actuelle et l'écris dans ma variable.
J'affiche cette variable en utilisant la fonction permettant d'en extraire l'heure, les minutes et les secondes.

Je fais une pause d'une seconde (1000 ms = 1 s ).

J'efface ensuite l'écran, puis je recommence, et ainsi de suite.

On obtient donc ceci :

Code : Console
----------------
--- 21:10:11 ---
----------------

Notez que vous n'êtes pas obligés de saisir des petits tirets comme je l'ai fait. :D

Euh... pourquoi n'as-tu pas mis par exemple « 100 ms », pour que ce soit plus précis ?

Parce que, que j'utilise « 100 ms », « 1 s » ou même « 1 ms », cela aura la même précision. L'horloge change à chaque seconde, pourquoi donc aller plus vite qu'elle ?

Simplification du code


Pourquoi passer par une variable ? Pourquoi ne pas entrer l'instruction qui récupère l'heure actuelle et la formater en une seule ligne ?

Code : VB.NET
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Module Module1
    Sub Main()
        'Boucle infinie /!\
        While 1
            'Affichage des heures, minutes, secondes
            Console.WriteLine(Date.Now.ToLongTimeString)
            'Pause de 1 seconde
            System.Threading.Thread.Sleep(1000)
            'Efface l'écran de la console
            Console.Clear()
        End While
    End Sub
End Module

Voilà mon exemple de simplification du code. Je vous l'avais bien dit : les programmeurs sont fainéants ! :)

Mais, tu ne nous avais pas expliqué ce raccourci !

Tatata, je l'ai expliqué lorsque j'ai parlé des fonctions et des objets. Il n'y a pas de limite d'objets que l'on peut relier, on a donc le droit de faire ça.

Attention : c'est plus simple mais pas toujours plus clair.

Q.C.M.

Si j'écris
Code : VB.NET
1
2
3
4
Dim MonString As String = "Phrase de test"
MonString = MonString.Replace("test2", "test")
Console.writeLine(MonString)
Console.Read()

Qu'aurais-je à la console ?
Ces instructions :
Code : VB.NET
1
2
3
4
Dim MonString As String = "Phrase de test"
MonString = MonString.ToLower()
MonString = MonString.ToUpper()
MonString = MonString.ToLower()


Donneront quelle valeur à "MonString" ?
Code : VB.NET
1
2
Dim MaDate As Date = "20/06/2009 06:06:06"
MaDate = MaDate.ToShortDateString()

Quelle valeur aura MaDate ?

Statistiques de réponses au QCM

Chapitre précédent Sommaire Chapitre suivant

Partager

18 commentaires pour "Jouer avec les mots, les dates"
Note moyenne : 3.60 / 4 (543 votes)
Pseudo Commentaire
Hors ligne bougyfab # Posté le 07/05/2011 à 23:09:53

salut.
pour ma part ,'ai fait la boucle avec
Do
'init variable
Dim temps As Date
temps = Date.Now

'affichage heure
Console.Write(temps.ToLongTimeString)

'rafraichissement
System.Threading.Thread.Sleep(1000)
Console.Clear()
Loop


cela fonctionne. Mais est-ce une erreur?
Hors ligne xslimax # Posté le 13/07/2011 à 15:35:07

Avis : Très bon

est ce que c'est essentiel de lire se chapitre car j'arrive pas a le lire je le trouve "chiant" désolé pour le mot.

nouveau langage qui contient php/javascript/html

Mes Competences:
  • html/Css: 100% j'ai fais tous les tuto qu'il y'a sur le site
  • php/mysql:100%
  • c#:50% plus que les app windows form
 
Hors ligne xslimax # Posté le 13/07/2011 à 15:50:23

Avis : Très bon

c'est bon j'ai rien dit

nouveau langage qui contient php/javascript/html

Mes Competences:
  • html/Css: 100% j'ai fais tous les tuto qu'il y'a sur le site
  • php/mysql:100%
  • c#:50% plus que les app windows form
 
Hors ligne xslimax # Posté le 13/07/2011 à 15:50:43

Avis : Très bon

EDIT:c'est bon j'ai rien dit

nouveau langage qui contient php/javascript/html

Mes Competences:
  • html/Css: 100% j'ai fais tous les tuto qu'il y'a sur le site
  • php/mysql:100%
  • c#:50% plus que les app windows form
 
Hors ligne Trimard # Posté le 16/11/2011 à 14:06:32
Chipper arrête de chiper
Avatar

Ville : Bron
Pays : France métropolitaine
Études : IUT A Lyon 1

Citation : EamjeeInc
Je m'explique : au lieu de « 16/06/2009 21:06:33 » (oui, je sais, il est exactement la même heure qu'il y a deux minutes...), nous obtiendrons « 16/06/2009 ».

xD Pourqu'oi ? Tu pensais qu'en seulement deux minutes l'heure allait changer ?

PS: Désolée de te dire ça mais faudrait faire le ménage dans ton tuto, il y a pas mal de phrases inutiles, quelques imperfections et endroits qui pourrait embrouiller les gens.

Je critiques beaucoup désolée ;) Mais c'est juste pour aider, il faut le prendre positivement


Bah en fait l'heure n'est vrai qu'à un instant "T", elle change continuellement, donc oui en deux minutes elle change ... Après, je peux comprendre que si tu ne le comprends pas, tu dois trouver beaucoup de phrase inutile qui finalement ne sont là que pour rendre le tuto plus agréable à la lecture et de pas bouffer du code pur et dur barbant a souhait pour un novice ...

On va pas s'énerver après on va être énervé d'être énervé alors soit heureux comme un 51 dans l'eau parce qu'après ornithorynque tu mets des points de suspension avec arobase et tu conclues avec un ?!? Ou tu fumes un pétard avec Servietsky parce que même si un 8 a l'envers reste un 8, de côté il cache un nombre infini de possibilité !!! Looser's Te@M Représente :D
 

Voir tous les commentaires