字符串:單引號括起的字符序列
1. 字符串的表示
- 將一個字符串看作一個行向量,行向量中每個元素對應一個字符
>> x='Hello World'
x =
'Hello World'
>> x(1:3)
ans =
'Hel'
- 若字符串中的字符含有單引號,則該單引號字符要用兩個單引號表示
>> x='I ''m a student'
x =
'I' m a student'
%轉義字符的表示
- 建立多行字符串,形成字符矩陣
>> ch=['abcdef';'123456']
ch =
2×6 char 數組
'abcdef'
'123456'
>> ch(2,3)
ans =
'3'
>> ch=['abcdef';'1234 6']
ch =
2×6 char 數組
'abcdef'
'1234 6'
%矩陣的各行字符數,即列數必須相同,當各行字符數不等,用空格調節
- 舉例
>> x='I''m a student';
%建立字符串向量
>> b=x(1:5)
b =
'I'm a'
%取第1-5個字符組成的子字符串
>> c=x(end:-1:1)
c =
'tneduts a m'I'
%將字符串倒過來排列
>> d=find(x>='a'&x<='z')
d =
3 5 7 8 9 10 11 12 13
%找出字符串中的小寫字母的序號向量
>> x(d)=x(d)-('a'-'A')
x =
'I'M A STUDENT'
%將小寫字母變爲大寫字母,小寫字母的ASCII碼比大寫字母大32
>> length(d)
ans =
9
%找出小寫字母的個數
%注意:字符串倒序排列的寫法,end:-1:1
2. 字符串的操作
1)字符串的執行
eval(s):s表示字符串
將參數字符串內容作爲對應的MATLAB命令執行
>> t=pi;
>> m='[t,sin(t),cos(t)]';
>> y=eval(m)
y =
3.1416 0.0000 -1.0000
2)字符串與數值數據轉換
- abs(s)和double(s):獲取字符串矩陣所對應的ASCII碼數值矩陣
注:abs( )函數可以求實數的絕對值、複數的模、字符串的ASCII碼值 - char(num):將ASCII碼矩陣轉換爲字符串矩陣
>> s1='MATLAB';
>> a=abs(s1)
a =
77 65 84 76 65 66
>> char(a+32)
ans =
'matlab'
3)字符串的比較
i. 關係運算符
六種關係運算符:<,<=,>,>=,==,~=(不等於)
字符串長度相同時,將字符串裏每個字符依次按ASCII碼值大小逐個進行比較,比較的結果是一個數值向量,向量中元素爲0或1。
>> 'www0'>='W123'
ans =
1×4 logical 數組
1 1 1 0
ii. 字符串比較函數
strcmp(s1,s2):比較字符串s1和s2是否相等,若相等,返回1,否則返回0。
strncmp(s1,s2,n):比較兩個字符串前n個字符是否相等,若相等,返回1,否則返回0。
strcmpi(s1,s2):忽略字符串字母大小寫,比較字符串s1和s2是否相等,若相等,返回1,否則返回0。
strncmpi(s1,s2,n):忽略字符串字母大小寫,比較兩個字符串前n個字符是否相等,若相等,返回1,否則返回0。
>> strcmp('www0','W123')
ans =
logical
0
>> strncmpi('Www0','w123',1)
ans =
logical
1
4)字符串的查找與替換
findstr(s1,s2):返回短字符串在長字符串中的開始位置
strrep(s1,s2,s3):將字符串s1中所有子字符串s2替換爲字符串s3
>> p=findstr('This is a test!','is')
p =
3 6
>> p=findstr('is','This is a test!')
p =
3 6
>> p=strrep('This is a test!','test','class')
p =
'This is a class!'