函數語言程式設計 - 字串



字串是一組字元,包括空格。可以說它是一個以NULL字元('\0')結尾的字元一維陣列。字串也可以被認為是一個預定義的類,大多數程式語言(如C、C++、Java、PHP、Erlang、Haskell、Lisp等)都支援它。

下圖顯示了字串“Tutorial”在記憶體中的樣子。

Strings

在C++中建立字串

下面的程式是一個示例,它演示瞭如何在C++(一種面向物件的程式語言)中建立字串。

#include <iostream> 
using namespace std; 

int main () {    
   char greeting[20] = {'H', 'o', 'l', 'i', 'd', 'a', 'y', '\0'}; 
   cout << "Today is: "; 
   cout << greeting << endl; 
   return 0; 
} 

它將產生以下輸出:

Today is: Holiday 

Erlang中的字串

下面的程式是一個示例,它演示瞭如何在Erlang(一種函數語言程式設計語言)中建立字串。

-module(helloworld).  
-export([start/0]).   
start() -> 
   Str = "Today is: Holiday",  
   io:fwrite("~p~n",[Str]). 

它將產生以下輸出:

"Today is: Holiday" 

C++中的字串操作

不同的程式語言對字串支援不同的方法。下表顯示了C++支援的一些預定義字串方法。

序號 方法及描述
1

Strcpy(s1,s2)

將字串s2複製到字串s1中

2

Strcat(s1,s2)

在s1的末尾新增字串s2

3

Strlen(s1)

返回字串s1的長度

4

Strcmp(s1,s2)

當字串s1和s2相同時返回0

5

Strchr(s1,ch)

返回字串s1中字元ch第一次出現的指標

6

Strstr(s1,s2)

返回字串s1中字串s2第一次出現的指標

下面的程式演示瞭如何在C++中使用上述方法:

#include <iostream> 
#include <cstring> 
using namespace std; 

int main () {   
   char str1[20] = "Today is "; 
   char str2[20] = "Monday"; 
   char str3[20]; 
   int  len ;  
   strcpy( str3, str1); // copy str1 into str3 
   cout << "strcpy( str3, str1) : " << str3 << endl;  

   strcat( str1, str2); // concatenates str1 and str2 
   cout << "strcat( str1, str2): " << str1 << endl;  

   len = strlen(str1);  // String length after concatenation 
   cout << "strlen(str1) : " << len << endl; 
   return 0; 
}    

它將產生以下輸出:

strcpy(str3, str1)   :  Today is 
strcat(str1, str2)   :  Today is Monday 
strlen(str1)         :  15 

Erlang中的字串操作

下表列出了Erlang支援的預定義字串方法。

序號 方法及描述
1

len(s1)

返回給定字串中的字元數。

2

equal(s1,s2)

如果字串s1和s2相等則返回true,否則返回false

3

concat(s1,s2)

在字串s1的末尾新增字串s2

4

str(s1,ch)

返回字元ch在字串s1中的索引位置

5

str(s1,s2)

返回s2在字串s1中的索引位置

6

substr(s1,s2,num)

此方法根據起始位置和從起始位置開始的字元數,從字串s1返回字串s2

7

to_lower(s1)

此方法返回小寫字串

下面的程式演示瞭如何在Erlang中使用上述方法。

-module(helloworld).  
-import(string,[concat/2]).  
-export([start/0]).  
   start() ->  
   S1 = "Today is ",  
   S2 = "Monday",  
   S3 = concat(S1,S2),  
   io:fwrite("~p~n",[S3]). 

它將產生以下輸出:

"Today is Monday" 
廣告