D Programlama - Dizeler

D, aşağıdaki iki tür dize gösterimi sağlar -

  • Karakter dizisi
  • Çekirdek dil dizesi

Karakter Dizisi

Karakter dizisini aşağıda gösterildiği gibi iki formdan birinde temsil edebiliriz. İlk form, boyutu doğrudan sağlar ve ikinci form, "Günaydın" dizesinin yazılabilir bir kopyasını oluşturan dup yöntemini kullanır.

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

Misal

İşte yukarıdaki basit karakter dizisi formlarını kullanan basit bir örnek.

import std.stdio;

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

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

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki gibi bir sonuç üretir -

Hello all 
Good morning

Çekirdek Dil Dizesi

Dizeler, D'nin çekirdek dilinde yerleşiktir. Bu dizeler, yukarıda gösterilen karakter dizisi ile birlikte çalışabilir. Aşağıdaki örnek, basit bir dize gösterimini gösterir.

string greeting1 = "Hello all";

Misal

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

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki gibi bir sonuç üretir -

Hello all 
Good morning 
Hello all

Dize Birleştirme

D programında dize birleştirme tilde (~) sembolünü kullanır.

Misal

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

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki gibi bir sonuç üretir -

Good morning 
Good morning

Dize Uzunluğu

Bayt cinsinden dizge uzunluğu, uzunluk fonksiyonu yardımıyla alınabilir.

Misal

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

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

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

Dize Karşılaştırması

D programlamada string karşılaştırması oldukça kolaydır. Dize karşılaştırmaları için ==, <ve> operatörlerini kullanabilirsiniz.

Misal

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

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki gibi bir sonuç üretir -

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

Dizeleri Değiştirme

[] Dizesini kullanarak dizeleri değiştirebiliriz.

Misal

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

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, aşağıdaki gibi bir sonuç üretir -

hello sample

Dizin Yöntemleri

IndexOf ve lastIndexOf dahil dizede bir alt dizenin konumu için dizin yöntemleri aşağıdaki örnekte açıklanmıştır.

Misal

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

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

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

Taşıma Kılıfları

Durumları değiştirmek için kullanılan yöntemler aşağıdaki örnekte gösterilmektedir.

Misal

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

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

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

Karakterleri Kısıtlama

Dizelerdeki karakterlerin sınırlandırılması aşağıdaki örnekte gösterilmektedir.

Misal

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

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

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