matlab學習筆記10_5 通用字符串操做和比較函數

一塊兒來學matlab-matlab學習筆記10

10_5 通用字符串操做和比較函數

以爲有用的話,歡迎一塊兒討論相互學習~Follow Me

參考書籍
《matlab 程序設計與綜合應用》張德豐等著 感謝張老師的書籍,讓我領略到matlab的便捷
《MATLAB技術大全》葛超等編著 感謝葛老師的書籍,讓我領略到matlab的高效git

將整數數組轉換成字符串

  • s=string(A)
    • 其中A爲正整數數組,這個函數的做用是將一個整數數組轉換成字符串矩陣,字符串中的字符ASCII碼便是A中相應的元素值。
    • 也能夠經過string()函數將任意正整數矩陣轉換成相應的字符串矩陣。github

      將ASCII碼轉換成字符串

      (1)char(A):此函數將由正整數組成的矩陣轉換成字符串矩陣,矩陣的元素通常要在0-65535之間,超出這個範圍的是沒有定義的,但也能夠顯示出結果,只是系統會給出超出範圍的警告。
      (2)s=char(C):若是C是由字符串組成的單元陣,此函數將單元陣C轉換成字符串矩陣,字符串矩陣的每行就是單元陣的每一個元素,且用空格將每一個字符串補齊,以保證字符串矩陣的合法性。也能夠用cellstr()函數將一個字符串矩陣轉換爲一個字符串單元陣。數組

(3)s=char(sl,s2,s3,...)此函數以各個字符串是s1,s2,s3,...爲每行構成字符串矩陣S,並自動以適當的空格追加在較短的字符串的後面,使各行的字符串的字符個數相同,以構造合法的字符串矩陣。參數中的空字符串也會被空格填充爲相同大小的空格字符串。函數

char(65537)
s={'My' 'name' 'is' 'hello'}
k=char(s)
cellstr(k)

ans =

￿  % 這個是越界了的輸出的不知道是什麼鬼東西


s =

    'My'    'name'    'is'    'hello'


k =

My   
name
is   
hello


ans =

    'My'
    'name'
    'is'
    'hello'

將字符串轉換成ASCII碼

  • abs(S) S爲字符串,此函數返回S的每一個字符的ASCII碼,結果是一個整數矩陣,能夠當作通常的矩陣處理
  • double(S) 此函數做用與abs(S)有相同之處,它是將符合矩陣或字符串轉換成雙精度的浮點數組組成的矩陣。學習

    輸入空格符

  • blanks(n)用於輸出n個空格。此函數在調整輸出格式,要輸出多個空格時十分有效,能夠精確地輸出須要的空格。一般與disp()函數聯用,對輸出格式進行調整。
    在這裏插入圖片描述spa

    將字符串進行大小寫轉換

  • upper(S):將字符串或者字符串矩陣S中的全部小寫字母轉換成大寫,原有的大寫字母保持不變
  • lower(S):將字符串或字符串矩陣S中的全部大寫字母轉換成小寫,原有的小寫字母保持不變設計

    將字符串做爲命令執行

  • a=eval('字符串表達式')
    此函數返回由字符串表達式執行的結果,能夠將各個不一樣部分放在"[]"內以造成一整條命令。這個函數在M文件中進行交互式命令時頗有用。
format compact
for i=1:9
eval(['a' char(abs('0')+i) '=' char(abs('0')+i)])
end


a1 =
     1
a2 =
     2
a3 =
     3
a4 =
     4
a5 =
     5
a6 =
     6
a7 =
     7
a8 =
     8
a9 =
     9

兩個字符串比較

  • (1)strcmp('stnngl','strmg2'):將兩個字符串進行比較,若是兩字符串相等,此函數返回邏輯「真",不然返回邏輯「假",即此函數只能判斷兩字符串是否相等,而不能判斷按字母順序誰在誰前面。
  • (2)strcmp(C1,C2):若是Cl和C2都是由字符串組成的大小相同的單元陣,此函數返回一個與單元陣相同大小的邏輯矩陣。若是單元陣Cl和C2相同位置上的字符串相同,則在邏輯矩陣的相應位置上輸出1,不然輸出0。Cl和C2其中之一或所有能夠爲字符串或字符串矩陣,但返回的邏輯矩陣與單元陣有相同的大小。code

  • 注意:單元數組和普通數組的返回值徹底不相同,普通數組只返回一個表示是否相等的值
  • 比較是否相同的大小寫函數對大小寫敏感,空格也會參與比較orm

strcmp('hello','hello')
strcmp('hello','world')
c1={'my' 'name';'is' 'lilei'}% 元胞數組,單元數組
c2={'her' 'name';'is' 'lili'}
c3='NAME'
c4 = ['my' 'name';'is' 'olli'] % 普通char數組
c5 = ['my' 'name';'is' 'lili']
strcmp(c1,c2)
strcmp(c1,c3)
strcmp(c5,c4)

% ans =
%      1
% ans =
%      0
% c1 =
%     'my'    'name'
%     'is'    'lilei'
% c2 =
%     'her'    'name'
%     'is'     'lili'
% c3 =
% NAME
% c4 =
% myname
% isolli
% c5 =
% myname
% islili
% ans =
%      0     1
%      1     0
% ans =
%      0     0
%      0     0
% ans =
%      0

兩個字符串的前n個字符

  • strncmp('string1','string2',n):若是2個字符串的前n個字符相同,則此函數返回邏輯"真",不然返回邏輯"假",比較函數對大小寫敏感。
  • strncmp(C1,C2,n):若是Cl和C2爲由字符串組成的大小相同的單位陣,則此函數將相同位置的字符串的前N個字符進行比較。若是相同就在相同位置輸出1,不然輸出0;如其中之一爲字符串,則將單位陣中的全部字符串都與這個字符串進行比較,返回與單位陣相同大小的邏輯陣。
s1='Matlab';s2='MatLab';
strncmp(s1,s2,3)
strncmp(s1,s2,4)
c1={'good' 'bad';'Matlab' 'Matlab'}
c2='MatLab'
strncmp(c1,c2,3)
strncmp(c1,c2,4)

% ans =
%      1
% ans =
%      0
% c1 =
%     'good'      'bad'   
%     'Matlab'    'Matlab'
% c2 =
% MatLab
% ans =
%      0     0
%      1     1
% ans =
%      0     0
%      0     0

匹配字符串操做

  • strmatch('substr', S)
    • S能夠是字符串矩陣或者字符串組成的單元陣,若是是單元陣,則必須是單列,函數返回以字符串substr開始的行的行號。字符串矩陣的查找速度要比單元陣的查找速度要快。
  • strvcat('Hello','Yes') is the same as ['Hello';'Yes '] exceptthat the padding is done automatically. 此函數用於構造字符串矩陣,可是能夠自動補零是每行中字符數量相同。 可是使用 char函數 也能解決這個問題
k=strmatch('good',char('good','badgood','goodbad'))
s={'yes';'noyes';'yesno'}
strmatch('yes',s,'exact')

% k =
%      1
%      3
% s =
%     'yes'
%     'noyes'
%     'yesno'
% ans =
%      1

在字符串中查找子串

  • findstr('str1','str2')此函數在長字符串中查找短的字符串,並返回字符串中短字符串開始的全部位置。子串和母串在括號中既可在前也可在後,即str一、str2中任意一個均可做爲子串或母串。
format compact
s='This is a good goose.'
b=findstr(s,'oo')

% s =
% This is a good goose.
% b =
%     12    17

字符串替換操做

  • strrep('str1','str2','str3')
    • 此函數將字符串中的全部的字符串str2用字符串str3來代替。其中,str一、str2和str3任何一個能夠爲字符串組成的單位陣或矩陣,返回的結果與此單位陣或矩陣有相同的大小。若是兩個以上爲單元陣(元胞矩陣)或矩陣時,則它們的類型和大小必須相同(每行字符數是不一樣的)。
format compact
strrep(s,'oo','ee')
str1={'matlab' 'welcome';'you' 'me'}
str2={'MatLab' 'lab';'good' 'software'}
str3={'mat' 'come';'you' 'me'}
strrep(str1,str3,str2)
strrep(str1,'me','you')
strrep('MatLab',str2,'!!!')
strrep('matlab','lab',str3)

% test_strrep
% ans =
% This is a geed geese.
% str1 =
%     'matlab'    'welcome'
%     'you'       'me'     
% str2 =
%     'MatLab'    'lab'     
%     'good'      'software'
% str3 =
%     'mat'    'come'
%     'you'    'me'  
% ans =
%     'MatLablab'    'wellab'  
%     'good'         'software'
% ans =
%     'matlab'    'welcoyou'
%     'you'       'you'     
% ans =
%     '!!!'       'MatLab'
%     'MatLab'    'MatLab'
% ans =
%     'matmat'    'matcome'
%     'matyou'    'matme'

獲得指定的子串

(1)strtok('string',d):此函數返回由字符串d做爲分割的字符串string的第1部分,也就是說,返回字符串strmg中第1個字符d以前的全部字符。若是字符串中不含有字符d則返回整個字符串;若是d字符恰爲字符串string的第1個字符,則函數返回除第1個字符以外的全部字符。合法的d能夠爲任意字符或字符串,若是d爲字符串,則將它的第1個字符做爲分隔符。若是string中有前導空格,則前導空格將被忽略。
(2)strtok('stnng'):此函數以默認的回車符(ASCII碼爲13)、製表符(ASCII碼爲9)、空格(ASCII碼爲32)做爲分割符,前導空格將被忽略
(3)[token,rem]=strtok(•••):此函數不但返回上面的查找結果token,還返回剩餘的字符串rem,其中不包括分割符,前導空格被忽略。其中strtok(...)能夠爲strtokok('string')或strtok('string',d)形式。blog

在這裏插入圖片描述

判斷串中元素是否爲字母

  • isletter(S) S能夠是字符串或字符串矩陣,此函數返回與S一樣維數的邏輯矩陣,若是S中的元素爲字母,則在邏輯矩陣的相應位置上輸出1,不然輸出0.

判斷串中元素是否爲空格

  • isspace(S) 此函數與isletter(S)用法相同,在爲空格的相應位置上輸出1,不然輸出0
相關文章
相關標籤/搜索