MATLAB-1-7字符型數據(字符串)


字符串:單引號括起的字符序列

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)字符串與數值數據轉換

>> 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!'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章