位置:首頁 > 高級語言 > D語言教學 > D語言字符串-String

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