Programação D - Strings

D fornece os seguintes dois tipos de representações de string -

  • Matriz de caracteres
  • String de linguagem principal

Matriz de personagens

Podemos representar a matriz de caracteres em uma das duas formas, conforme mostrado abaixo. O primeiro formulário fornece o tamanho diretamente e o segundo formulário usa o método dup que cria uma cópia gravável da string "Bom dia".

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

Exemplo

Aqui está um exemplo simples usando os formulários de matriz de caracteres simples acima.

import std.stdio;

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

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

Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -

Hello all 
Good morning

String principal da linguagem

Strings são integrados à linguagem central de D. Essas strings são interoperáveis ​​com a matriz de caracteres mostrada acima. O exemplo a seguir mostra uma representação de string simples.

string greeting1 = "Hello all";

Exemplo

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); 
}

Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -

Hello all 
Good morning 
Hello all

String Concatenation

A concatenação de strings na programação em D usa o símbolo til (~).

Exemplo

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); 
}

Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -

Good morning 
Good morning

Comprimento da corda

O comprimento da string em bytes pode ser recuperado com a ajuda da função length.

Exemplo

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); 
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

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

Comparação de cordas

A comparação de strings é bastante fácil na programação D. Você pode usar os operadores ==, <e> para comparações de strings.

Exemplo

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, "'."); 
   }
}

Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -

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

Substituindo Strings

Podemos substituir strings usando a string [].

Exemplo

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);
}

Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -

hello sample

Métodos de Índice

Os métodos de índice para localização de uma substring na string incluindo indexOf e lastIndexOf são explicados no exemplo a seguir.

Exemplo

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));
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

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

Manuseio de casos

Os métodos usados ​​para alterar os casos são mostrados no exemplo a seguir.

Exemplo

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));   
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

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

Personagens restritivos

Os caracteres restritos em strings são mostrados no exemplo a seguir.

Exemplo

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)); 
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

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