Chaînes (bibliothèque d'exécution de Apache OpenOffice BASIC)

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png

Utilisation de jeux de caractères

Lorsqu'il traite les jeux de caractères, Apache OpenOffice Basic utilise le jeu de caractères Unicode. Les fonctions Asc et Chr permettent d'obtenir la valeur Unicode d'un caractère ou le caractère correspondant à une valeur Unicode donnée. Les expressions suivantes assignent les différentes valeurs Unicode à la variable Code :

Code = Asc("A")         ' Latin letter A (Unicode-value 65)
Code = Asc("€")         ' Euro character (Unicode-value 8364)
Code = Asc("Л")         ' Cyrillic letter Л (Unicode-value 1083)

Inversement, l'expression :

MyString = Chr(13)

permet d'initialiser la chaîne MyString avec la valeur correspondant au nombre 13, qui correspond à un retour à la ligne forcé.

La commande Chr est fréquemment utilisée dans les langages Basic pour insérer des caractères de contrôle dans une chaîne. Ainsi, l'assignation suivante :

MyString = Chr(9) + "This is a test" + Chr(13)

fait précéder le texte d'un caractère de tabulation (valeur Unicode 9) et le fait suivre d'un retour à la ligne forcé (valeur Unicode 13).

Accès à une partie de la chaîne

Apache OpenOffice Basic fournit quatre fonctions retournant des parties de chaîne :

Left(MyString, Length)
retourne les Length premiers caractères de MyString.
Right(MyString, Length)
retourne les Length derniers caractères de MyString.
Mid(MyString, Start, Length)
retourne les Length premiers caractères de MyString à partir de la position Start.
Len(MyString)
retourne le nombre de caractères dans MyString.

Quelques exemples de ces fonctions sont répertoriés ci-dessous :

Dim MyString As String
Dim MyResult As String
Dim MyLen As Integer
 
MyString = "This is a small test"
MyResult = Left(MyString,5)      ' Provides the string "This "
MyResult = Right(MyString, 5)    ' Provides the string " test"
MyResult = Mid(MyString, 8, 5)   ' Provides the string " a sm"
MyLen = Len(MyString)            ' Provides the value 21

Recherche et remplacement

                   La fonction InStr de Apache OpenOffice Basic permet de rechercher une chaîne partielle à l'intérieur d'une autre :
ResultString = InStr (MyString, SearchString)

Le paramètre SearchString spécifie la chaîne à rechercher dans MyString. La fonction retourne un nombre contenant la position à laquelle la chaîne SearchString apparaît pour la première fois dans MyString. Pour rechercher d'autres occurrences de la chaîne, la fonction fournit une option permettant de spécifier la position à partir de laquelle Apache OpenOffice Basic commence la recherche. Dans ce cas, la syntaxe de la fonction est :

ResultString = InStr(StartPosition, MyString, SearchString)

Dans les exemples ci-dessus, InStr ne fait pas la distinction entre les majuscules et les minuscules. Pour effectuer une recherche avec InStr en respectant la casse, ajoutez le paramètre 0, comme indiqué dans l'exemple suivant. Dans ce cas, il faudra préciser le premier argument, car son absence provoque une erreur.

ResultString = InStr(StartPosition, MyString, SearchString, 0)

En utilisant les fonctions d'édition de chaînes indiquées ci-dessus, les programmeurs peuvent rechercher et remplacer une chaîne à l'intérieur d'une autre :

Function Replace(Source As String, Search As String, NewPart As String)
  Dim Result As String
  Dim StartPos As Long
  Dim CurrentPos As Long
 
  Result = ""
  StartPos = 1
  CurrentPos = 1
 
  If Search = "" Then
    Result = Source
  Else 
    Do While CurrentPos <> 0
      CurrentPos = InStr(StartPos, Source, Search)
      If CurrentPos <> 0 Then
        Result = Result + Mid(Source, StartPos, _
        CurrentPos - StartPos)
        Result = Result + NewPart
        StartPos = CurrentPos + Len(Search)
      Else
        Result = Result + Mid(Source, StartPos, Len(Source))
      End If                ' Position <> 0
    Loop 
  End If 
 
  Replace = Result
End Function

La fonction effectue la recherche dans la chaîne transférée Search dans une boucle, en utilisant InStr dans le terme d'origine Source. Si elle trouve le terme recherché, elle écrit la partie précédant l'expression dans le tampon de retour Result. Elle ajoute la section Part au niveau du terme recherché Search. Si aucune occurrence supplémentaire du terme recherché n'est trouvée, la fonction détermine la partie de la chaîne restante et l'ajoute au tampon de retour. Elle retourne la chaîne ainsi créée comme résultat du processus de remplacement.

Comme le remplacement de parties de séquences de caractères est une des fonctions les plus fréquemment utilisées, la fonction Mid dans Apache OpenOffice Basic a été étendue de manière à pouvoir effectuer cette tâche automatiquement. L'exemple suivant remplace trois caractères par la chaîne is à partir de la sixième position de la chaîne MyString.

Dim MyString As String
 
MyString = "This was my text"
Mid(MyString, 6, 3, "is")

Formatage des chaînes

La fonction Format formate les nombres sous forme de chaînes. Pour ce faire, la fonction attend une expression Format, qui sert de modèle pour le formatage des nombres. Chaque substituant à l'intérieur du modèle assure que cet élément est bien formaté en conséquence dans la valeur de sortie. Les cinq substituants les plus importants sont le zéro (0), le dièse (#), le point(.), la virgule (,) et le dollar ($).

Dans le modèle, un zéro (0) assure que l'emplacement correspondant sera toujours occupé par un nombre. Si aucun chiffre n'est fourni, un 0 s'affiche à sa place.

Un point (.) correspond au séparateur de décimales défini par le système d'exploitation dans les paramètres nationaux.

L'exemple ci-dessous définit le nombre de décimales d'une expression à l'aide des caractères 0 et . :

MyFormat = "0.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0,40"
MyString = Format(0.434, MyFormat)       ' Provides "0,43"

De la même manière, il est possible d'ajouter des zéros devant un nombre pour lui donner la longueur souhaitée :

MyFormat = "0000.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0000,40"
MyString = Format(0.434, MyFormat)       ' Provides "0000,43"

Une virgule (,) représente le caractère utilisé par le système d'exploitation comme séparateur de milliers, tandis qu'un dièse (#) représente un chiffre ou un emplacement qui n'est affiché que si la chaîne en entrée le nécessite.

MyFormat = "#,##0.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1.579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1.579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0,40"
MyString = Format(0.434, MyFormat)       ' Provides "0,43"

À la place du substituant $, la fonction Format affiche le symbole monétaire adapté, défini par le système (cet exemple considère qu'un environnement linguistique européen a été défini) :

MyFormat = "#,##0.00 $"   
MyString = Format(-1579.8, MyFormat)     ' Provides "-1.579,80 €" 
MyString = Format(1579.8, MyFormat)      ' Provides "1.579,80 €" 
MyString = Format(0.4, MyFormat)         ' Provides "0,40 €" 
MyString = Format(0.434, MyFormat)       ' Provides "0,43 €"

Vous pouvez également utiliser les instructions de formatage utilisées dans VBA pour la date et l'heure :

sub main
    dim myDate as date
    myDate = "01/06/98"
    TestStr = Format(myDate, "mm-dd-yyyy") ' 01-06-1998
    MsgBox TestStr
end sub
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools