1. 程式人生 > >Matlab從入門到精通(八)--字串操作

Matlab從入門到精通(八)--字串操作

  1. 字串的定義

>> str='今天,是2018年11月23日, 我們班一起去上海旅遊。'

  1. 下標訪問字串

>>str(1)

         今

>>str(3)

         ,

3、字串的運算

 

符 號 形 式

符 號 意 義

英 文 簡 寫

==

等於

eq

~=

不等於

ne

<

小於

lt

大於

gt

<=

小於或等於

le

>=

大於或等於

ge

4、字串的分類

可以用isletter和isspace兩個函式來對字串中的字元進行分類 。

4.1Isletter

函式

Isletter(str)用來判斷字串str中的每個字元是否是字元:

>> str = 'A12 ,as,1234213,Yu';

>> isletter(str)

ans =

     1     0     0     0     0     1     1     0     0     0     0     0     0     0     0     0     1     1

 

4.2isspace函式

isspace(str)函式用來判斷字串str中每個字元是否是空格.

str = '12ac3c a,  a';

>> isspace(str)

ans =

     0     0     0     0     0     0     1     0     0     1     1     0

 

5、字串與數值的轉換

函  數

功    能

函  數

功    能

upper

改該字串為大寫

lower

改該字串為小寫

fprintf

把格式化的文字寫到檔案中或顯示屏上

sprintf

用格式控制,數字轉換成字串

sscanf

用格式控制,字串轉換成數字

char

ASCII碼轉換成字串

num2str

數字轉換成字串

int2str

整數轉換成字串

char

生成字串陣列

int2str

整數轉換為字串

mat2str

矩陣轉換為字串

num2str

數值轉換為字串

sprintf

格式輸出字串

sscanf

格式讀入字串

str2double

字串轉換為雙精度

str2num

字串轉換為數值

6、比較兩個字串

使用strcmp()函式,當兩個字串相等時返回1,否則返回0.

>> strcmp('12','012')

ans =

     0

>> strcmp('12wq','12wq')

ans =

     1

7、單元陣列(cell)輸出及轉換為字串

(1)單元陣列輸出:celldisp(A);%A為單元陣列

(2)單元陣列轉換為字串:用importdata和textscan讀取內容為字串的txt,結果為cell型元胞組,要想將其轉換稱字元型則可以利用char()函式.例:

>> t = {'20','001101'};

>> char(t{1})

ans =

20

8、字串轉換為數字

Double()是將字串的每個字元轉換稱ASCII,而str2num()函式是將字串直接轉換成數字.

>> s ='012';

>> res = double(s)

 

res =

    48    49    50

>> str2num(s)

ans =

12

9、取出字串的子串

>> str = '0001111012';

取出str的前5個字元

>> str(1:5)

ans =

00011

取出str後的5個字元

>> str(end-5:end)

ans =

111012

取出str的後5個字元

>> str(numel(str)-5:numel(str))

ans =

111012

10、字串連線

(1)方法一:

在MATLAB中,字串的聯接十分方便,其一般格式為:

[字串變數1,字串變數2,'字符集1', '字符集2',…]

例如:若鍵入['圓周率為',num2str(pi)],螢幕上顯示出

ans =

圓周率為3.1416

 

(2)方法二

使用函式strcat.

>> str1 = '0111';

>> str2 = '333390';

>> strcat(str1,str2)

ans =

0111333390

11、替換字串的某幾位

替換字串的後三位:

>> str = '0110999';

>> str(end-2:end)='112'

str =

0110112

12、從字串讀取資料

使用strread函式可以從字串中讀取資料,使用格式:

[a,b,c,…] = strread(cstr,’format’,’param’,’value’) ;

示例:

>> t = '12.6,x2y,z';

>> [a,b,c] = strread(t,'%f%q%q','delimiter',',') ;

>> a

 

a =

 

   12.6000

 

>> b

 

b =

 

    'x2y'

 

>> c

 

c =

 

'z'

注:

  1. 對於第二個引數中,%f表示浮點數,%q表示字串;
  2. 第三個引數為’delimiter’表示format中識別的項將由value中指定的字元分割(此處為’,’).
  3. 結果中的b,c變數輸出均帶有單引號,表示為單元(cell)陣列.

13、其它字串函式

函 數 名

函 數 用 途

函 數 名

函 數 用 途

strvcat

垂直鏈接字串

strncmp

比較字串的前n個字元

findstr

在其他的字串中尋找該字串

strrep

用其他字串代替改串

symvar

尋找字串表示式中的變數(除了i,j,pi,inf,nan,eps以及通用函式

的其他識別符號),如果沒有找到變數則返回空單元陣列{}

blanks

生成空的字串

deblank

刪除字串內的空格

ischar

字串檢驗

iscellstr

字串的單元檢驗

isletter

字母檢驗

isspace

空格檢驗

strings

strings函式的幫助

deblank

去掉字串末尾的空格

lower

轉換為小寫

strcmpi

字串比較(忽略大小寫)

strjust

調整字串排列位置

strrep

尋找和替代

strtok

尋找字串中第一個空字元前邊的字串××

texlabel

將字串轉換為Tex格式(推薦理科同學掌握Latex)

upper

大寫