天天看點

《MATLAB R2012a超級學習手冊》一2.4 字元串處理函數

本節書摘來自異步社群《matlab r2012a超級學習手冊》一書中的第2章,第2.4節,作者 史潔玉 , 孔玲軍,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

matlab r2012a超級學習手冊

matlab能夠很好地支援字元串資料,可以用兩個不同的方式來表示字元串,即字元數組和字元串單元數組。

通常可以用m×n的字元數組來表示多個字元串,隻要這些字元串的長度是一樣。當需要儲存多個不同長度的字元串時,可以用單元類型來實作。

matlab提供了很多字元串操作,包括字元串的建立、合并、比較、查找以及與數值之間的轉換。下面介紹如何建立字元串的操作。

1.建立字元數組

可以用一對單引号來表示字元串,例如下面的示例代碼。

也可以用字元串合并函數strcat()來得到一個新的字元串,例如下面的示例代碼。

上述語句得到輸出代碼如下。

注意:

函數strcat()在合并字元串的同時會把字元串結尾的空格删除。要保留這些空格,可以用矩陣合并符[]來實作字元串合并,例如下面的示例代碼。

利用函數char()來建立字元串。該函數建立字元串數組時,如果字元串不具有相同的長度,則函數char()自動用空格把字元串補足到最長的字元串的長度。例如下面的示例代碼。

2.建立字元串單元數組

可以用函數cellstr()來建立字元串單元數組。例如,有一個字元數組如下。

下面語句的功能是把上述字元數組轉換成為字元串單元數組,示例代碼設定如下。

函數cellstr()已經把字元串尾部的空格截去。例如下列語句可以檢視celldata的第一個字元串長度。

可以用函數char()把一個字元串單元數組轉換成一個字元數組,示例代碼設定如下。

其第一個字元串的長度可以得到如下的代碼。

matlab裡包括以下幾種比較字元串和字元子串的方法。比較兩個字元串或者兩個字元串的子串是否相同。

比較兩個字元串中的單獨字元是否相同。

對字元串内的元素進行識别,判定每一個元素是字元還是空白符(包括空格、制表符tab和換行符)。

這些函數對字元數組和字元串數組都适用。

1.字元串比較函數

matlab提供的字元串比較函數如表2-18所示。

《MATLAB R2012a超級學習手冊》一2.4 字元串處理函數

例如,有兩個字元串如下。

由于這兩個字元串不相同,故調用函數strsmp()的結果為0,語句如下。

這兩個字元串的前5個字元是相同的,故用函數strncmp()比較它們的前5個字元,會傳回1,代碼設定如下。

2.用關系運算符比較字元串

可以對字元數組運用matlab7.0的關系運算符,但是要求比較的字元數組具有相同的維數,或者是其中一個是标量。例如,以下代碼是用等号運算符(==)來判斷兩個字元串裡哪些字元是相同的。

提示:

也可以用其他關系運算符(>、>=、<、<=、==、!=)來比較兩個字元串。

matlab提供的一般字元串查找和替換函數如表2-19所示。

《MATLAB R2012a超級學習手冊》一2.4 字元串處理函數

下面例子是實作字元串替換。

下面例子是用于實作字元串查找。

下面例子是用于獲得第一個分隔符之前的字元串。

matlab提供的把數值轉換為字元串的函數如表2-20所示。

《MATLAB R2012a超級學習手冊》一2.4 字元串處理函數

matlab提供的把字元串轉換為數值的函數如表2-21所示。

《MATLAB R2012a超級學習手冊》一2.4 字元串處理函數

例如,要在指令行中輸出一行字元串來顯示向量x的最小值,使用代碼如下。

其中,函數disp()是在指令行中顯示一個字元串。由上述語句得到的結果如下。

繼續閱讀