'Hello World'单引号是字符数组 char ,"Hello World" 双引号是单个字符串标量string scalar,字符串数组是["Hello", "World"]

下面具体罗列了它们的区别:

索引

单引号 'Hello World'有多个字符,会认为是字符数组,即各个字符可以通过索引来提取

1
2
3
4
5
6
>> a = 'Hello World';
>> a(1)

ans =

'H'

而双引号 "Hello World" 会被认为是单个字符串,无法直接用索引获取子字符串,需要用extract函数来提取子字符串

1
2
3
4
5
6
7
8
9
10
11
>> b = "Hello World";
>> b(1)

ans =

"Hello World"
>> extract(b,1)

ans =

"H"

拼接

  • 方括号[]拼接方式只适用于 char,因为本质上char就是数组,本质上就是在用逗号合并数组的方法合并字符数组。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >> ['Hello','World'] 

    ans =

    'HelloWorld'

    >> ["Hello","World"]

    ans =

    1×2 string 数组

    "Hello" "World"
  • 加号+拼接方式只用于 string

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> 'Hello' + 'World'

    ans =

    159 212 222 216 211

    >> "Hello" + "World"

    ans =

    "HelloWorld"
  • 函数strcat既可用于string也可用于char

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> strcat('Hello','World')

    ans =

    'HelloWorld'

    >> strcat("Hello","World")

    ans =

    "HelloWorld"
  • sprintf也既可用于string也可用于char

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> sprintf('Hello %s','World')

    ans =

    'Hello World'

    >> sprintf("Hello %s","World")

    ans =

    "Hello World"

判断字符数

  • 函数length只能用于char,用于string只会返回1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> length('Hello World')

    ans =

    11

    >> length("Hello World")

    ans =

    1
  • 判断字符是否为空,string也不能用 isempty 判断是否为空

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    >> isempty('')

    ans =

    logical

    1

    >> isempty("")

    ans =

    logical

    0
  • 判断字符数的最佳做法是使用 strlength 函数。无论输入是字符串标量还是字符数组,都可以返回正确的数字,也可以用来判断字符是否为空

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    >> strlength('Hello World')

    ans =

    11

    >> strlength("Hello World")

    ans =

    11

    >> logical(strlength(''))

    ans =

    logical

    0

    >> logical(strlength(""))

    ans =

    logical

    0

函数传参

目前一般函数的字符传参都是支持char和string混用的,不过还是需要注意下函数说明。

但以命令形式使用 cddircopyfileload 等函数时,应避免使用双引号。在命令形式中,双引号被视为字面文本的一部分,而不是字符串构造运算符,因此导致报错。

1
2
3
>> cd "C:\Program Files"
错误使用 cd
输入参数太多。

cd "C:\Program Files" 等效于 cd('"C:\Program','Files"')

涉及空格,命令形式只支持用单引号包裹,或者改用函数形式才支持传入双引号

1
2
cd 'C:\Program Files'
cd("C:\Program Files")

Ref