4D v16.3

Symboles d'indice de chaîne

Accueil

 
4D v16.3
Symboles d'indice de chaîne

Symboles d'indice de chaîne  


 

Les symboles d'indice de chaîne sont les suivants : [[...]]

Ces symboles sont utilisés pour désigner un caractère particulier dans une chaîne. Cette syntaxe vous permet de référencer un caractère dans un champ ou une variable de type Alpha ou Texte.

Note de compatibilité : A compter de 4D v13, il n’est plus possible de visualiser les anciens symboles Mac OS dans l’éditeur de méthodes (≤...≥).

Lorsque les symboles d'indice de chaîne sont placés à gauche de l'opérateur d'affectation (:=), un caractère est affecté à la position référencée dans la chaîne. Par exemple, en postulant que la chaîne vsNom n'est pas une chaîne vide, le code suivant passe le premier caractère de la chaîne vsNom en majuscule :

 If(vsNom#"")
    vsNom[[1]]:=Uppercase(vsNom[[1]])
 End if

Lorsque les symboles d'indice de chaîne apparaissent dans une expression, ils retournent le caractère auquel ils font référence sous la forme d'une chaîne d'un caractère. En voici un exemple :

  ` L'exemple suivant teste si le dernier caractère de vtText est le caractère "@"
 If(vtText#"")
    If(Character code(Substring(vtText;Length(vtText);1))=At sign)
  ` ...
    End if
 End if
 
  ` En utilisant la syntaxe des caractères d'indice de chaîne, vous écririez plus simplement :
 If(vtText#"")
    If(Character code(vtText[[Length(vtText)]]=At sign)
  ` ...
    End if
 End if

Lorsque vous utilisez les symboles d'indice de chaîne, il est de votre responsabilité de vous référer à des caractères existant dans la chaîne, de la même manière que pour les éléments d'un tableau. Si, par exemple, vous référencez le 20e caractère d'une chaîne, cette chaîne doit contenir au moins 20 caractères.

  • Ne pas respecter cette condition en mode interprété n'est pas signalé comme une erreur par 4D.
  • Ne pas respecter cette condition en mode compilé (sans options) peut entraîner une "corruption" de la mémoire, si, par exemple, vous écrivez un caractère au-delà de la fin d'une chaîne ou d'un texte.
  • Ne pas respecter cette condition en mode compilé est signalé lorsque le contrôle d'exécution est activé. Si, par exemple, vous exécutez le code suivant :
  ` Ne pas faire ça !
 vsToutTexte:=""
 vsToutTexte[[1]]:="A"

L'alerte suivante s'affichera :

Exemple  

La méthode projet suivante ajoute une lettre capitale à tous les mots du texte passé en paramètre et retourne le texte modifié :

  ` Méthode projet de passage en capitale
  ` PasserEnCap ( Texte ) -> Texte
  ` PasserEnCap ( Texte source ) -> Texte avec des lettres capitales
 
 $0:=$1
 $vlLen:=Length($0)
 If($vlLen>0)
    $0[[1]]:=Uppercase($0[[1]])
    For($vlChar;1;$vlLen-1)
       If(Position($0[[$vlChar]];" !&()-{}:;<>?/,.=+*")>0)
          $0[[$vlChar+1]]:=Uppercase($0[[$vlChar+1]])
       End if
    End for
 End if

Une fois cette méthode placée dans la base, la ligne :

 ALERT(PasserEnCap("Bonjour, mon nom est Jean Bon et je me présente aux présidentielles !"))

... affiche l'alerte suivante :



Voir aussi  

Char
Character code
Codes ASCII
Types de données

 
PROPRIÉTÉS 

Produit : 4D
Thème : Chaînes de caractères

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)