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