D語言字串-String


D語言提供了以下兩種型別的字串表示:

  • 字元陣列。

  • 核心語言字串。

字元陣列

我們可以表示兩種形式,如下所示的一個字元陣列。第一種形式直接提供的大小和第二種形式使用它建立字串的可寫副本“Good morning”的dup方法。

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

下面是使用上述簡單的字元陣列的形式一個簡單的例子。

import std.stdio;

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

Hello all
Good morning

核心語言字串

字串是內建在D核心語言,這些字串是互操作與上面顯示的字元陣列。下面的例子顯示了一個簡單的字串表示形式。

string  greeting1= "Hello all";

下面是一個簡單的例子。

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

Hello all
Good morning
Hello all

字串連線

D程式設計語言的字串連線使用符號(?)符號。一個簡單的字串連線範例如下所示。

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

Good morning
Good morning

字串的長度

字串的位元組長度可以length功能的幫助下檢索。一個簡單的例子如下所示。

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

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

字串比較

字串比較在D語言程式設計中相當容易。可以使用==,<和>運算子進行字串比較。一個簡單的例子如下所示。

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

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

替換字串

我們可以使用string[]替換字串。一個簡單的例子如下所示。

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

hello sample

索引方法

索引方法在字串的indexOf包括和lastIndexOf子串的??位置,在下面的例子來說明。

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

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

處理大小寫

用於改變大小的方法示於下面的例子。

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

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

限制字元

在字串限制字元顯示在下面的例子。

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

當上面的程式碼被編譯並執行,它會產生一些結果如下:

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