Partager via


Small Basic - Les Bases : Le Texte (fr-FR)

Cet article couvre les bases de la manipulation du texte en Small Basic en utilisant l'objet Text.

Introduction

Un texte est une série de caractères, généralement appelée une "chaîne" en informatique. Une chaîne peut être une constante (ou littéral) entourée par des guillemets, ou une variable qui peut affecté pour stocker une chaîne.

txt = "Hello World"

Ci-dessus, la variable 'txt' contient la chaîne littérale "Hello World".

Comme indiqué, une chaîne contient un ensemble de caractères, dans cet exemple nous avons 11 catactères, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l' et 'd'.

Une chaîne peut également être une série de nombre comme "3.14159", ou encore contenir des caractères spéciaux comme les retours chariot ou '♥' ou encore un beep clavier. Attention à pas confondre les différentes représentations d'un caractère que les polices proposent, notamment les polices symbole. Un caractère identique peut être affiché différemment en fonction de la police.

Chaque caractère est identifié en interne par un 'Code Caractère' qui est un nombre, souvent appelé code/nombre ASCII ou UNICODE.

Nous voulons souvant créer une chaîne à partir d'autres chaînes, ou interroger une chaîne pour savoir ce qu'elle contient.

Les Méthodes de l'objet Text

Ce qui suit est un bref résumé des méthodes de l'objet Text dans Small Basic, avec quelques exemples simples.

GetLength

Retourne le nombre de caractères qui se trouve dans la chaîne en paramètre.

txt = "Hello World"
TextWindow.WriteLine(txt+ " contient " +Text.GetLength(txt)+ " caractères" )

La chaîne vide "" à une signification particulière en Small Basic. Elle représente une variable qui n'est pas encore initialisée, de plus un élément d'un tableau est supprimé lorsqu'il lui est affecté "". Par conséquent nous ne pouvons pas avoir d'élément qui contienne une chaîne vide "".

Append

Joint ou concatène deux chaînes. Nous pouvons également utiliser + pour joindre deux chaînes en général. De plus, si les chaînes contiennent des nombres, alors + ajoutera numériquement les valeurs plutôt que de faire une jointure de chaînes.

TextWindow.WriteLine("35"+"17")
TextWindow.WriteLine(Text.Append("35","17"))

Changement de casse

C'est très simple, créer simplement une copie de la chaîne en paramètre en modifiant sa casse (changement majuscule/minuscule).

C'est très utile pour comparer des chaînes équivalentes sans être sensible à la casse. Si nous convertissons les deux chaînes de la même manière (par exemple en minuscule) alors comparer leur égalité ne prendra pas en compte la casse des chaînes originales.

TextWindow.WriteLine("Entrer un nom")
inputName  = TextWindow.Read()
If (Text.ConvertToLowerCase(inputName ) = "john" ) Then
  TextWindow.WriteLine("Salut "+inputName)
EndIf

ConvertToLowerCase

Créé une copie de la chaîne en paramètre, avec tous les caractères convertis en minuscule.

ConvertToUpperCase

Créé une copie de la chaîne en paramètre, avec tous les caractères convertis en minuscule (ou capitale).

Codes Caractère

Les codes caractères sont utiles pour :

  • Vérifier rapidement un ensemble de caractères, par exemple une lettre majuscule.
  • Ajouter des caractères spéciaux comme retour chariot ou retour arrière.
  • Fournir une valeur numérique unique pour un caractère, pour une méthode d'encodage par exemple.
For i =  0 To 127
  TextWindow. CursorLeft = 0
  TextWindow.Write(i)
  TextWindow. CursorLeft = 4
  TextWindow.WriteLine(Text.GetCharacter(i))
EndFor

 

TextWindow.WriteLine("Entrer une phrase")
input = TextWindow.Read()
capitals  = ""
For i =  1 To Text.GetLength(input)
   char = Text.GetSubText(input,i,1)
   charCode = Text.GetCharacterCode(char)
   If (charCode  >= 65 And charCode <= 90 ) Then
     capitals = capitals+char
  EndIf
EndFor
TextWindow.WriteLine( "Les majuscules de votre phrase sont" )
TextWindow.WriteLine(capitals)

Les codes pour les caractères spéciaux pour un retour chariot (10) et ligne suivante (13) sont très utiles. Ces termes font référence aux machines à écrire; ils sont parfois utilisés séparément et parfois sont combinés pour former une retour à la ligne (ou nouvelle ligne).

CR = Text.GetCharacter(10)
LF = Text.GetCharacter(13)
mlTextBox  = Controls.AddMultiLineTextBox(0,0)
Controls.SetTextBoxText(mlTextBox,"Hello"+LF+"World")

GetCharacter

Retourne le caractère du code caractère en paramètre.

GetCharacterCode

Retourne le code caractère du caractère en paramètre.

Manipulation de sous-chaîne

Les commandes suivantes manipulent des sous-chaînes dans de plus grandes chaînes.

EndsWith

Détermine si une chaîne se termine par un ensemble de caractère, retourne "True" or "False".

If (Text.EndsWith(fileName,".txt") ) Then
  'We have found a txt file
EndIf

A noter que "True" et "False" sont des chaînes spéciales dans Small Basic qui représentent un état vrai ou faux et sont utilisées directement par les instructions If ou While.

'An infinite loop
While ("True")
  Program.Delay(20)
EndWhile

StartsWith

Déterminer si une chaîne commence par un ensemble de caractère, retourne "True" ou "False".

Les méthodes restantes de Text vous permettent de rechercher et manipuler des sous-chaînes.

'A simple find and replace
txt = "This is my test text, it contains text that has 3 instances of the word text."
txtCopy  = txt ' A working copy
find = "text" 'The text to find
replace  = "TEXT" 'The text to replace with
result = "" 'The result of the find and replace
pos = Text.GetIndexOf(txtCopy,find ) ' The next occurence of our search text
While (pos  > 0)
   result = result+Text.GetSubText(txtCopy,1,pos-1 ) 'The text before our search text
   result = result+ replace 'Add the replace text
   txtCopy = Text.GetSubTextToEnd(txtCopy,pos+Text.GetLength(find) ) 'The text after our search text
   pos = Text.GetIndexOf(txtCopy,find ) 'The next occurence of our next search text
EndWhile
result = result+ txtCopy 'The final text after our search text (if any).
TextWindow.WriteLine(result)

GetIndexOf

Recherche l'index (c'est à dire la position depuis le début) du début d'une chaîne dans une autre. Elle retourne 0, si la chaîne n'est pas trouvée.

GetSubText

Retourne une sous-chaîne de la chaîne en paramètre et qui commence à l'index fourni et en ne gardant que le nombre de caractères définis.

GetSubTextToEnd

Retourne une sous-chaîne de la chaîne en paramètre et qui commence à l'index fournir et en gardant tous les caractères jusqu'à la fin de la chaîne.

IsSubText

Détermine si une sous-chaîne se trouve n'importe où dans la chaîne en paramètre, retourne "True" ou "False". C'est identique à GetIndexOf retournant une valeur > 0.


Autres Langues