Character

  • MATLAB 中字符与数值的地位一致, 每个字符以 Unicode 编码储存, 占 2 bytes
    • 字符的内部运算实际上是编码数值的运算, 所以字符本质上是一个数字串
    • 因此可以说 MATLAB 本质上只有数值数组一种数据结构
    • 因此大部分接受数值参数的函数都可以接受字符参数
  • 新版本中新增了更适于*字符串操作的字符串 string 数据类型, 与 char 的主要区别见 Matlab Characters and Strings

属性

  • 区别于数值数据, 大小(长度)为 1 的一个数值可以有任意位, 任意单个字符大小(长度)为 1
    • length(1200+3.123i) = 1; length('hello') = 5
  • identity 测试函数
    • ischar 是否为 char 类
    • isletter 返回相同大小逻辑数组, 每个元素为对应元素是否为英文字母字符的判断
    • isspace 返回相同大小逻辑数组, 每个元素为对应元素是否为white-space 字符的判断
    • isstrprop
  • 利用函数 double 可将字符转换为其 ASCII 编码

创建与连接

  • 最基本的字符串创建语法为单引号 ' 包裹字符: 'string'
    • 注意双引号 " 创建的是字符串 string 类
    • 单引号字符本身语法为 ''
      • 'I''m Josh' = 'I'm Josh'

单行字符数组

要把已有字符数组 a = 'hello,', b = ' this ', c = 'world!' 水平连接形成单行字符串的方法:

  • 中括号 [] 直接连接
    • [a b c] = 'hello, this world!'
  • 函数 strcat: strcat(a,b,c) = 'hello, world'
    • strcat 会自动去除末尾空白符号 white-space
      • white-space 包括 space, tab, newline, carriage return 等

多行字符数组

多行字符数组即二维字符数组, 需要通过竖直连接 (相同长度) 字符数组创建:

  • 中括号 [] 内用分号 ; 分隔
    • [a;b;c]
  • 函数 char: char(a,b,c) char
    • 对于空数组也会补齐
  • 函数 strvcat: strvcat(a,b,c)
    • ++不推荐使用++
    • 用法同函数 char(a,b,c), 但会会忽略(去除)空数组

特殊字符数组

  • 函数 blanks: blanks(n) 创建长度为 n 的空格字符行向量

比较运算

  • 是否完全相同

查找与替换

A

相关函数:

  • strrep
  • strfind
  • findstr
  • strmatch
  • strok