Programmation en D - Chaînes

D fournit les deux types de représentations de chaîne suivants -

  • Tableau de caractères
  • Chaîne de langue principale

Tableau de caractères

Nous pouvons représenter le tableau de caractères dans l'une des deux formes comme indiqué ci-dessous. Le premier formulaire fournit directement la taille et le second utilise la méthode dup qui crée une copie inscriptible de la chaîne "Good morning".

char[9]  greeting1 = "Hello all"; 
char[] greeting2 = "Good morning".dup;

Exemple

Voici un exemple simple utilisant les formes de tableau de caractères simples ci-dessus.

import std.stdio;

void main(string[] args) { 
   char[9] greeting1 = "Hello all"; 
   writefln("%s",greeting1); 

   char[] greeting2 = "Good morning".dup; 
   writefln("%s",greeting2); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit un résultat comme suit -

Hello all 
Good morning

Chaîne de langage de base

Les chaînes sont intégrées au langage de base de D. Ces chaînes sont interopérables avec le tableau de caractères illustré ci-dessus. L'exemple suivant montre une représentation sous forme de chaîne simple.

string greeting1 = "Hello all";

Exemple

import std.stdio;

void main(string[] args) { 
   string greeting1 = "Hello all"; 
   writefln("%s",greeting1);  
   
   char[] greeting2 = "Good morning".dup; 
   writefln("%s",greeting2);  
   
   string greeting3 = greeting1; 
   writefln("%s",greeting3); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit un résultat comme suit -

Hello all 
Good morning 
Hello all

Concaténation de chaînes

La concaténation de chaînes dans la programmation D utilise le symbole tilde (~).

Exemple

import std.stdio;

void main(string[] args) { 
   string greeting1 = "Good"; 
   char[] greeting2 = "morning".dup; 
   
   char[] greeting3 = greeting1~" "~greeting2; 
   writefln("%s",greeting3); 
   
   string greeting4 = "morning"; 
   string greeting5 = greeting1~" "~greeting4; 
   writefln("%s",greeting5); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit un résultat comme suit -

Good morning 
Good morning

Longueur de chaîne

La longueur de la chaîne en octets peut être récupérée à l'aide de la fonction de longueur.

Exemple

import std.stdio;  

void main(string[] args) { 
   string greeting1 = "Good"; 
   writefln("Length of string greeting1 is %d",greeting1.length); 
   
   char[] greeting2 = "morning".dup;        
   writefln("Length of string greeting2 is %d",greeting2.length); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Length of string greeting1 is 4 
Length of string greeting2 is 7

Comparaison des chaînes

La comparaison de chaînes est assez facile en programmation D. Vous pouvez utiliser les opérateurs ==, <et> pour les comparaisons de chaînes.

Exemple

import std.stdio; 
 
void main() { 
   string s1 = "Hello"; 
   string s2 = "World";
   string s3 = "World";
   
   if (s2 == s3) { 
      writeln("s2: ",s2," and S3: ",s3, "  are the same!"); 
   }
   
   if (s1 < s2) { 
      writeln("'", s1, "' comes before '", s2, "'."); 
   } else { 
      writeln("'", s2, "' comes before '", s1, "'."); 
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit un résultat comme suit -

s2: World and S3: World are the same! 
'Hello' comes before 'World'.

Remplacement des chaînes

Nous pouvons remplacer les chaînes en utilisant la chaîne [].

Exemple

import std.stdio; 
import std.string; 
 
void main() {
   char[] s1 = "hello world ".dup; 
   char[] s2 = "sample".dup;
   
   s1[6..12] = s2[0..6]; 
   writeln(s1);
}

Lorsque le code ci-dessus est compilé et exécuté, il produit un résultat comme suit -

hello sample

Méthodes d'index

Les méthodes d'index pour l'emplacement d'une sous-chaîne dans une chaîne comprenant indexOf et lastIndexOf sont expliquées dans l'exemple suivant.

Exemple

import std.stdio;
import std.string;

void main() { 
   char[] s1 = "hello World ".dup; 
    
   writeln("indexOf of llo in hello is ",std.string.indexOf(s1,"llo")); 
   writeln(s1); 
   writeln("lastIndexOf of O in hello is " ,std.string.lastIndexOf(s1,"O",CaseSensitive.no));
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

indexOf.of llo in hello is 2 
hello World  
lastIndexOf of O in hello is 7

Manipulation des cas

Les méthodes utilisées pour changer les cas sont illustrées dans l'exemple suivant.

Exemple

import std.stdio;
import std.string;

void main() { 
   char[] s1 = "hello World ".dup; 
   writeln("Capitalized string of s1 is ",capitalize(s1)); 
    
   writeln("Uppercase string of s1 is ",toUpper(s1)); 
    
   writeln("Lowercase string of s1 is ",toLower(s1));   
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Capitalized string of s1 is Hello world  
Uppercase string of s1 is HELLO WORLD  
Lowercase string of s1 is hello world

Restriction des caractères

Les caractères de restriction dans les chaînes sont illustrés dans l'exemple suivant.

Exemple

import std.stdio;
import std.string;

void main() { 
   string s = "H123Hello1";  
   
   string result = munch(s, "0123456789H"); 
   writeln("Restrict trailing characters:",result);  
   
   result = squeeze(s, "0123456789H"); 
   writeln("Restrict leading characters:",result); 
   
   s = "  Hello World  "; 
   writeln("Stripping leading and trailing whitespace:",strip(s)); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Restrict trailing characters:H123H 
Restrict leading characters:ello1 
Stripping leading and trailing whitespace:Hello World