相关文章推荐
闯红灯的大象  ·  js ...·  3 周前    · 
大力的西瓜  ·  sql ...·  2 周前    · 
打篮球的匕首  ·  Qt之JSON基础操作_qt ...·  2 周前    · 
仗义的柠檬  ·  exchange server 2019 ...·  7 月前    · 
刚毅的斑马  ·  Python docx ...·  8 月前    · 
沉着的投影仪  ·  X-MOL·  1 年前    · 
  • 在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 =
    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 =
    

    (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