Matlab 字符串處理的若干問題總結


Matlab 字符串處理的若干問題總結

 

 

 

基本說明


 

Matlab字符串的處理:

  • 在MATLAB中,字符串是用單引號括起來的字符序列(雙引號括起來也可以)
  • 若字符串中的字符含有單引號,則該單引號字符要用兩個單引號來表示,或者直接將整個字符串用雙引號引起來
  • 在MATLAB中,下標索引都是從1開始,無論是數據是數組,矩陣,結構體還是元組數據類型

 

1. 字符串中含有單引號



我們知道,matlab 中一個字符串由單引號標識,如果一個字符串中本身含有單引號,比如xi'an(地名,西安),使用轉義符是不奏效的。matlab 提供的做法是,雙單引號標識一個單引號:

1 >> addr = 'xi''an'
2 addr =
3 xi'an
4 123

 

2. 字符串拼接


 

[] 進行的是字符串的拼接;
{} 定義的則是cell,即元組;

這涉及到 matlab 的編程設計思想問題,也即 matlab 是圍繞矩陣展開的,而 matlab 下的矩陣必須是數值型的,而不可以是字符串矩陣,想要定義一個結構來存放多個字符串,可以使用 {},而不可以使用構建matlab 矩陣)[](等價於 strcat)。

 

3. 使用 char()函數


1 >> asc = char(reshape(32:127,32,3)')
2 asc =
3 
4 !"#$%&'()*+,-./0123456789:;<=>?
5 @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
6 `abcdefghijklmnopqrstuvwxyz{|}~

 

當 char() 函數接受多參數時,也即

S = char(T1,T2,...,TN)

 

將會構建 char 型二維矩陣(使用矩陣的方式進行索引),行數為參數的個數,列數為單個參數的最大長度。


4. 字符串比較


 

strcmp()
strcmpi():大小寫不敏感,即case insensitive;

 

5. deblank


 

Remove trailing whitespace from end of character array. (刪除序列尾部(注意僅僅是尾部,不包括頭部的空格)的空格)。

 

6. 字符串切割(split)



使用正則表達式:

>> str = 'hello world hello China';
>> splited = regexp(str, ' ', 'split');
>> splited
splited = 
'hello' 'world' 'hello' 'China'

 

注意 regexp(str, ' ', 'split') 得到的是元組類型。


7. strfind():返回元素的下標


 

>> strfind('hello|world', '|')
6

 

8. char ⇔ ASCII,字符和其對應ASCII編號的轉換



(1)ASCII ⇒ char

>> char([97, 98, 99])
ans =

abc

 

(2)char ⇒ ASCII

>> abs('abc')
ans =

97 98 99


9. 字符串的拼接



字符串(str1、str2)的拼接使用 [str1, str2] 或 [str1 str2]。
注意,str1 + str2 所做的動作就不是拼接了(C++中重載了的運算符+可以實現字符串拼接功能),而是首先轉換為 ascii 碼類型,再進行相加的操作,這就要求兩串的長度必須相等,

>> str1 = 'hello'; str2 = 'world';
>> str1 + str2 
ans =

223 212 222 216 211

 

 

>> abs(str1) + abs(str2)
ans =

223 212 222 216 211

 

 

參考:

 

https://blog.csdn.net/lanchunhui/article/details/51337203?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM