Matlab從入門到精通(八)--字串操作
-
字串的定義
>> str='今天,是2018年11月23日, 我們班一起去上海旅遊。'
-
下標訪問字串
>>str(1)
今
>>str(3)
,
3、字串的運算
符 號 形 式 |
符 號 意 義 |
英 文 簡 寫 |
== |
等於 |
eq |
~= |
不等於 |
ne |
< |
小於 |
lt |
> |
大於 |
gt |
<= |
小於或等於 |
le |
>= |
大於或等於 |
ge |
4、字串的分類
可以用isletter和isspace兩個函式來對字串中的字元進行分類 。
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'
注:
- 對於第二個引數中,%f表示浮點數,%q表示字串;
- 第三個引數為’delimiter’表示format中識別的項將由value中指定的字元分割(此處為’,’).
- 結果中的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 |
大寫 |